2013-07-27 28 views
2

我有一個動作控制器:如何通過請求提供閃光燈?

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

和索引視圖以下參數:

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

這好像我需要這兩個implicits,以訪問而不是明確地傳遞給Flash。這就是我認爲Flash隱式工作的原因: 如果在沒有明確的flash參數的情況下調用模板,那麼編譯器將查找標記爲隱式的Flash,以在調用視圖函數的範圍中隱含。這個閃光從哪裏來?該請求被標記爲隱式,但它不是Flash。我知道這個請求中有一個flash成員,但是根據我對implicits的理解,我沒有看到這個視圖如何獲得這個視圖。

回答

3

您的方法index是某個類的一部分,它擴展了Controller,因此Controller的所有方法都在範圍之內。

存在隱含的方法flashController

implicit def flash (implicit request: RequestHeader): Flash 

所以,如果你有範圍隱含RequestHeader它可以轉換器Flash含蓄。 `