我的问题是SimpleResult似乎不允许对其会话进行读访问,只允许写访问(withSession)。
object MyAction extends ActionBuilder[MyRequest] {
def invokeBlock[A](
request: Request[A],
block: (MyRequest[A]) => Future[SimpleResult]
): Future[SimpleResult] = {
// do stuff, create x, y
val resultFuture = block(MyRequest(x, y, request)
// Now I want to modify resultFuture's session,
// keeping any changes block might have done to request.session.
// And I'd rather not parse result's headers by hand to do that.
}
}
我错过了什么?
答案 0 :(得分:1)
这在2.2.x中似乎是不可能的,但在2.3.x中 play.api.mvc.Result 有2个新方法 addingToSession 和 removedFromSession 允许从结果添加和删除会话值。
所以上述问题可以通过以下方式解决:
...
resultFuture map (_.addingToSession(myKey -> myValue)(request))
...