2011-03-25 44 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回答。谢谢!