scala - 无法将元素添加到 Play session

标签 scala playframework playframework-2.0

我正在尝试将一个简单的字符串添加到 Play session 中,但它不起作用。为了进行测试,我编写了一个小 Controller 函数,它首先向 session 添加一个字符串,然后打印 session 包含的所有元素,但它始终为空。

def foo = Action { request =>
  request.session + ("token", "foobar")
  request.session.data.foreach{ keyVal => println("\tkey value pair: " + keyVal._1 + ", " + keyVal._2)}
  Ok("just a test")
}

我做错了什么?我是否需要通过 application.conf 或其他方式激活某些东西?

最佳答案

其实session也是一个不可变的结构。

request 中存储的 session 对象确实有一个 + 方法,后者通过返回 Session 的新实例。保持 request.session 不变。

进一步思考,我们可以断言更新的 session 只有在另一个请求-响应事务中重用时才有意义...

因此更新 session 的方法是在构建响应(Result in Play)时更新它,就像这样:

Ok("just a test").withSession(request.session + ("token", "foobar"))

这将在您的 cookie 中添加新的 session 字段,该字段将在下一次交易(即请求-响应)中可用。

关于scala - 无法将元素添加到 Play session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11868414/

相关文章:

java - 在 Akka 中初始化一个 actor,Play 2.4.2

Scala - 从 List 中获取唯一值

scala - Play Framework JsNumber 参数转换为 Any 类型

scala - 拥有包含 10K 记录的用户静态列表/序列,这是线程安全的吗?

java - Morphia 数据存储获取、保存、删除查询

java - BindRequest 上的 Play 框架错误

java - Scala 中的容错 XML 解析

scala - 为什么这两个代码块对于 Option 类是等价的?

validation - 验证错误中的位置信息

html - 在 play framework 2.2 scala 模板中读取 cookie 值