我有Play 2.0
个应用
TestController.scala
def foo(p1: String) = Action {implicit request =>
Ok(bar(p1))
}
private def bar(p1: String) = {
//access request parameter here
}
有没有办法让implicit
将request
传递给bar
答案 0 :(得分:16)
是的,你可以:
def foo(p1: String) = Action { implicit request =>
Ok(bar(p1))
}
private def bar(p1: String)(implicit req: RequestHeader) = "content"
代码:
Action { implicit request
在Action对象上调用此方法:
def apply(block: Request[AnyContent] => Result): Action[AnyContent] = {
因此,您所谓的“请求”与名为“block”的参数匹配。这里的“隐含”是可选的:它使“请求”值可用作其他方法/函数调用的隐式参数。
“bar”函数中隐含的内容表示它可以从隐式值中获取“req”的值,并且不一定需要显式传递。