Scala Play 2,将请求传递给方法

时间:2012-06-25 23:50:52

标签: scala playframework playframework-2.0

我有Play 2.0个应用

TestController.scala

def foo(p1: String) = Action {implicit request =>
  Ok(bar(p1))
}

private def bar(p1: String) = {
//access request parameter here
}

有没有办法让implicitrequest传递给bar

1 个答案:

答案 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”的值,并且不一定需要显式传递。