我有一个带有动作的控制器:
def index = Action { implicit request =>
Ok(views.html.index(MyModel.all)
}
带有以下参数的索引视图:
@(my_models : List[MyModel])(implicit flash : Flash)
似乎我需要同时具有这两种含义才能访问闪存而不明确地传递它。这就是我认为flash隐含的工作方式: 如果在没有显式flash参数的情况下调用模板,则编译器将在调用视图函数的作用域中查找隐式标记的Flash。这个闪光从哪里来?请求被标记为隐式,但它不是Flash。我知道请求有一个flash成员,但是根据我对implicits的理解,我没有看到视图如何获得访问权。
答案 0 :(得分:3)
您的方法index
是某个类的一部分,它扩展了Controller
,因此Controller
的所有方法都在范围内。
flash
中有隐式方法Controller
:
implicit def flash (implicit request: RequestHeader): Flash
因此,如果您在范围内有隐式RequestHeader
,则可以隐式转换为Flash
。
`