关于临时保存JSF应用程序的状态,而不使用会话:
另一种选择是使用t: Apache库的saveState;另一个最近的选择是使用CDI @ConversationScope。
t:saveState @ConversationScope
每一种方法的优点和缺点是什么?你会用哪一个?为什么?
关于内存配置(会话所消耗的空间和时间),@ConversationScope是否更好?
无状态JSF :saveState
在JSF2.2上,有可能运行无状态。由于组件树不再持久化,t:saveState将无法工作。是对的吗?!
我有一个从JSF1.2迁移到JSF2.x的应用程序。它有很多视图使用t:saveStave。
当前,会话大小变得太大了。这主要是会话复制的问题。
值得将t:saveState替换为@ConversationScope吗?
更新:大部分的用例都是流的(如向导)。因此,@ViewScope无法应用。
发布于 2014-05-16 20:23:05
关于临时保存JSF应用程序的状态,而不使用会话: 另一种选择是使用t: Apache Tomahawk库的saveState;最近的另一种选择是使用CDI @ConversationScope
<t:saveState>来自旧的JSF1.x次,这些应用程序应该保留它的使用。@ConversationScope来自CDI1.0,用于扩展JSF和组件在几个请求中的生命周期,并使用传递请求的标识符。
使用JSF 2的最佳选择是@javax.faces.bean.ViewScoped,由于JSF2.2,您应该使用与CDI1.1兼容的@javax.faces.view.ViewScoped。
如果您将使用JSF2.0.x或2.1.x以及CDI1.0,那么您将无法使用@ViewScoped。为了解决这个问题,有一些第三方库允许使用CDI管理的JSF bean的视图范围。
值得将t:saveState替换为@ConversationScope吗?
由于要迁移到JSF2.x,所以必须完全放弃对<t:saveState>的使用。根据JSF2.x版本的不同,您应该使用@ViewScope或它的替代方案。我不建议使用@ConversationScope,除非您希望/需要通过几个视图(比如在实现流时)保持bean的活力,但是JSF2.2也通过使用@FlowScoped来解决这个问题。
更多信息:
https://stackoverflow.com/questions/23702221
复制相似问题