9

私は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

4

1 に答える 1

18

はい、できます:

  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] = {

つまり、「リクエスト」と呼ばれるものは、「ブロック」という名前のパラメータと一致します。ここでの「暗黙的」はオプションです。「request」値を暗黙的パラメーターとして他のメソッド/関数呼び出しで使用できるようにします。

「bar」関数のimplicitは、暗黙の値から「req」の値を取得できることを示しており、必ずしも明示的に渡す必要はありません。

于 2012-06-26T00:22:07.660 に答える