Play框架Scala - 在表单中获取会话值

3

我正在使用Scala的Play 2.0.4框架。

我有两个模型,分别是用户(User)和团队(Team)。

case class User {
    var email: String,
    var username: String
}

case class Team {
    var sport: String,
    var captain: String //is the username of a User
}

在我的用户和团队控制器中,对象是通过表单创建的。对于用户来说,这很完美。成功请求后,我使用.withSession()将用户名放入会话中。也很好用。
但是现在我正在尝试创建一个团队并从会话中检索用户名,却遇到了困难。
看起来像是:
val teamForm = Form[Team](
    mapping(
        sport -> nonEmptyText,
        //I actually don't have an input for captain as it should be retrieved from the session
    )
) (
    ((sport, _) => User(sport, request.session.get("username"))
    ((team: Team) => Some(team.sport, team.captain))
)

问题在于请求(request)在表单的“上下文”中是未知的。

有没有人有解决方法?

1个回答

4
除非我漏掉了一些基本的东西,否则您可以将val teamForm更改为def
def teamForm(request:Request[_]) = Form[Team](
    mapping(
        sport -> nonEmptyText,
        //I actually don't have an input for captain as it should be retrieved from the session
    )
) (
    ((sport, _) => User(sport, request.session.get("username"))
    ((team: Team) => Some(team.sport, team.captain))
)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接