播放框架Scala - 获取表单中的会话值

时间:2013-01-02 11:49:52

标签: forms scala session playframework playframework-2.0

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

我必须使用用户和团队的模型。

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))
)

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

有没有人知道如何解决这个问题?

1 个答案:

答案 0 :(得分: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))
)