2009-08-27 52 views
2

在我的Grails應用程序我有一個控制器的動作,做這個:Grails的閃光範圍

def activeMember = {ConfirmSignUpCommand signupCommand -> 

    flash.signupCommand = signupCommand 
    render(view: "confirmPassword") 
} 

當confirmPassword.gsp提交表單時它是通過處理以下動作:

def validatePasswordConfirmation = { 

    def password = params.password 
    def command = flash.signupCommand 
}   

但是,當我到達validatePasswordConfirmation操作時,閃存範圍爲空。我100%確定在這兩個控制器操作之間沒有提交任何請求。我的閃光範圍對象在哪裏去了?

+0

這是奇怪的,你確定閃光範圍確實是空的,它給一個屬性找不到錯誤? activeMember操作中的signupCommand從不爲空? 如果一切都失敗,請嘗試grails清理。 – 2009-08-28 10:40:23

回答

6

在您的場景中,flash對象可用於下一個請求,即呈現confirmPassword.gsp頁面(很多時候它也用於通過重定向將對象傳遞到另一個控制器)。當confirmPassword.gsp頁面提交這是另一個請求,並且您放置在閃存中的對象被自動清除。

+0

我認爲處理'activeMember'動作和呈現'confirmPassword'視圖都是同一請求的一部分。猜猜我錯了。我不明白爲什麼我會使用flash範圍將數據從動作傳遞到視圖,因爲我只能使用該模型。所以我想閃光範圍只有在重定向後傳遞數據時纔有用? – 2009-08-28 13:37:26

+1

我看到經常使用閃光燈將消息或消息代碼傳遞到視圖(即事件x已保存)。這似乎是閃存的常見用例,以及用於前向/重定向的存儲對象。 – 2009-08-28 15:07:51

+1

你能想出爲什麼你可以使用flash範圍傳遞消息給視圖而不是模型(或請求範圍)的任何特定原因嗎?我不能...... – 2009-08-28 15:15:05