我正在尝试编写自己的操作并隐式传入DatabaseSession。但是,我最多可以在我的控制器中做这样的事情。
def index = MyAction { implicit myRequest =>
implicit val dbss = myRequest.databaseSession
aClass.someMethod() // requires an implicit DatabaseSession
}
在playframework中,您可以像这样访问会话:
def index = Action { implicit request =>
val someOption = session.get("something")
// OR
aClass.doSomething() // requires an implicit Session
}
在这里,正如我们所看到的,当只有请求以隐式方式传入时,您可以直接访问会话。会议来自何处?我怎么能像Session一样传入DatabaseSession?所以我不必写:
implicit val dbss = myRequest.databaseSession
我知道这是可能的,因为光滑能够隐式传递他们的dbSession。但我似乎无法弄清楚他们是如何做到的。
完全糊涂了! = S
答案 0 :(得分:1)
秘密在于Controller,它有一个隐含的def:
implicit def request2session(implicit request: RequestHeader): Session
PlayFramework,你很聪明!