2011-03-25 49 views
0

我目前正在JSF Bean上使用ViewScope進行測試Viewscoped bean在返回相同視圖時不保留它的狀態?

我注意到了這種行爲。

有此按鈕:

<p:commandButton value="Submit Data to Server" 
    ajax="false" update="debugPanel" /> 

我可以看到postconstruct只發生一次,並通過該按鈕觸發提交行得觸發postconstruct,這是正確的,因爲它的返回到了同樣的觀點。

但是,當我加修改我的按鈕變成這樣:

<p:commandButton value="Submit Data to Server" 
    ajax="false" update="debugPanel" 
    action="viewScope2.xhtml?faces-redirect=false"/> 

我可以看到postconstruct方法被調用每一個提交,這意味着豆犯規保留它的狀態,儘管它actualy返回同一視圖。我想這是因爲redirectin的,所以我忽略它,並且按鈕變成是這樣的:

<p:commandButton value="Submit Data to Server" 
    ajax="false" update="debugPanel" 
    action="viewScope2.xhtml"/> 

但儘管如此,該postconstruct方法被調用每一個提交,這是不desireable。

是否有可能有這樣的理想主義:

無論是明示或 (通過行動 方法的返回「myview.xhtml」通過屬性或 )implicily定義,無論是使用重定向 或者不是,當 返回到相同的視圖時,viewscoped bean將始終保留它的狀態 。

請分享您的觀點!

謝謝.....

+0

您是否實現了http://stackoverflow.com/questions/5416070/jsf-2-and-post-redirect-get?這可能是原因。 – BalusC 2011-03-25 10:34:14

+0

@BalusC:不,我沒有在這種情況下。由於沒有明確說明目標視圖,它仍然可以正常工作,這是原始帖子中的第一種情況。 – bertie 2011-03-26 02:20:52

回答

0

基本上所有這些問題都已經在這個entry回答。謝謝!