scala - Scala long 到字符串的转换打印空白

标签 scala playframework

我正在尝试从 User 类转换用户 ID 并将其存储在 Play 中! session 变量。但是,当我尝试打印该 session 变量时,它返回一个空白字符串。这是一个简单的身份验证。

身份验证期间:

session += "userid" -> user.id.toString

在 Play 中打印 session 变量!斯卡拉 View :
@ctx("userid")

整个认证定义:
    def authenticate(login:LoginAttempt) = {
          println("in authenticate")
      User.authenticate(login.username, login.password) match {
            case Some(user:User) => {
              session += "username" -> user.emailAddress
              session += "userid" -> user.id.toString
              session += "name" -> user.name
          session += "accounts" -> user.accounts.toString
              Redirect(session("path").getOrElse("/"))
            }
            case _ => {
              flash += "error" -> "Wrong username or password."
              Action(Authentication.login)
            }
        }
    }

和用户类:
case class User(
  val id: Long,

一个办法? 这里缺少什么或出了什么问题阻止了 user.id从存储在 session 中?谢谢

最佳答案

四处打听,又多看了几遍,这确实是该剧的一个“特点”造成的! 1.2.4 框架。幸运的是,我们可以对 v2 期待更多。

对于我们的特定应用程序,在 session 变量方面有第三个经常被忽视的步骤。您需要renderArgs每个人都可以访问。所以@ChrisJamesC 的评论大部分是正确的:初始化中缺少一个步骤。

这是我们 Secure.scala Controller 中发生的事情:

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

在我自己的情况下,我没有意识到我需要为我想在 session 中存储和访问的每个变量渲染参数。但是有一个问题:您仍然需要将每个 var 存储为一个字符串。

然后在每场比赛中! View 我可以像这样访问 var:@ctx("userid")
我希望这对 future 使用 Play 的人有所帮助!

关于scala - Scala long 到字符串的转换打印空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9223213/

相关文章:

java - 在 scala 类中使用 java.util.Map[String, String] 类型的 arg 覆盖 java 方法

scala - 将 Shapeless hlist 类型 F[T1]::...::F[Tn]::HNil 映射到类型 T1::...::Tn::HNil(类型级别排序)

playframework - 缓存 renderBinary 响应

json - Play Map[Int,_] 的 JSON 格式化程序

scala - 在测试中设置 javaOptions for Play/SBT

java - Play Framework 控制台不使用自定义配置

java - 在 Scala 中,为什么余数 (%) 运算符会返回负数?

function - 如何在 Scala 中的案例类中添加自定义行为以复制函数?

java - Play Framework : JDBC connection vs JDBC datasource

scala - 消除与父类(super class)的类字段同名的构造函数参数的歧义