如果像我一样,你来自Java Servlet世界,Play对请求属性的支持(最近在2.6版本中引入)的时间太长了。现在,我已经有机会仔细研究它了,我想知道它是否可用。
从文档中逐字逐句(Scala):
// Create a TypedKey to store a User object
object Attrs {
val User: TypedKey[User] = TypedKey.apply[User]("user")
}
// Get the User object from the request
val user: User = req.attrs(Attrs.User)
// Put a User object into the request
val newReq = req.addAttr(Attrs.User, newUser)
我了解并理解不可变对象的功能概念,但是如果要将此片段解释为向请求添加属性的行为让我持有新请求,那么我该怎么办呢!?在回调的反应世界中, Play 是否将请求传递给我的代码,而不是相反?如果我无法在操作中附加属性然后在错误处理程序中检查它,那么这有什么用呢?希望我在这里错过了一些东西......
答案 0 :(得分:0)
您可以通过过滤器将属性附加到请求。 https://www.playframework.com/documentation/2.6.x/ScalaHttpFilters
然后,过滤器可以将 new 请求传递给框架,然后框架会将其提供给您的处理程序。
编辑:
将修改后的(新)请求传递回框架:
...
nextFilter(requestHeader.addAttr(Attrs.User, newUser))
...