После расспросов и прочтения, это действительно было вызвано «особенностью» Play!1.2.4 рамки.К счастью, мы можем ожидать большего с v2.
Для нашего конкретного приложения есть третий часто пропускаемый шаг, когда дело доходит до переменных сеанса.Вам нужно renderArgs
для каждого из них, чтобы они были доступны.Поэтому комментарий @ChrisJamesC был в основном правильным: в инициализации отсутствовал шаг.
Вот что происходит в нашем контроллере Secure.scala:
(session("userid"), session("username"), session("name"), session("accounts")) match {
case (Some(userid), Some(username), Some(name), Some(accounts)) => {
renderArgs += "userid" -> userid
renderArgs += "username" -> username
renderArgs += "name" -> name
renderArgs += "accounts" -> accounts
Continue
}
case _ => {
session += "path" -> Request.current().path
Action(Authentication.login)
}
}
В моем собственном случае яне понимал, что мне нужно сделать renderArgs для каждой переменной, которую я хочу сохранить и получить к ней доступ в сеансе.Но есть одна загвоздка: вам все равно нужно хранить каждую переменную как строку.
Затем в каждой игре!view Я могу получить доступ к var следующим образом: @ctx("userid")
Надеюсь, это поможет будущим людям, использующим Play!