我们在IBM Websphere 8上使用带有Primefaces的JSF。我的问题是,如果我在JSF中有更多的Conversations,ViewState就会过期。如果用户处理两个会话并导航到多个页面,则视图状态的缓冲区(默认为20个插槽)已满,另一个会话的viewStates将被删除。 因此,如果我回到第一个对话,那么viewState就不存在了,我不能继续在这个对话中工作。
是否可以在会话或任何其他解决方法中保存ViewStates?将 javax.faces.STATE_SAVING_METHOD 设置为客户端并不是我认为的最佳解决方案。显着增加 org.apache.myfaces.NUMBER_OF_VIEWS_IN_SESSION 也不是一个非常好的解决方案,因为预期会有很多会话。
答案 0 :(得分:0)
我们自己解决了这个问题。我们采用PhaseListener并组织视图,因此每个会话只有一个视图槽。这可能,因为我们禁用了缓存,因此每个对话不需要多个视图。 我们的应用程序需要禁用缓存。