如何通过请求提供闪存?

时间:2013-07-27 05:26:13

标签: scala playframework implicit

我有一个带有动作的控制器:

def index = Action { implicit request =>
  Ok(views.html.index(MyModel.all)
}

带有以下参数的索引视图:

@(my_models : List[MyModel])(implicit flash : Flash)

似乎我需要同时具有这两种含义才能访问闪存而不明确地传递它。这就是我认为flash隐含的工作方式: 如果在没有显式flash参数的情况下调用模板,则编译器将在调用视图函数的作用域中查找隐式标记的Flash。这个闪光从哪里来?请求被标记为隐式,但它不是Flash。我知道请求有一个flash成员,但是根据我对implicits的理解,我没有看到视图如何获得访问权。

1 个答案:

答案 0 :(得分:3)

您的方法index是某个类的一部分,它扩展了Controller,因此Controller的所有方法都在范围内。

flash中有隐式方法Controller

 implicit def flash (implicit request: RequestHeader): Flash

因此,如果您在范围内有隐式RequestHeader,则可以隐式转换为Flash。 `