默认情况下,JSF看起来非常'有状态'。我需要允许人们使用我们的应用程序,多个选项卡在应用程序的不同部分执行许多操作。
如果没有经过大量的重新设计,我似乎无法找到合适的指导。
我们目前不使用ICEfaces,但我刚在ICEfaces文档中找到了这个:
6.5.7。 ICEfaces Portlet和并发DOM视图
ICEfaces提供了一个名为的功能 控制的并发DOM视图 是否ICEfaces框架 支持单个的多个视图 来自同一浏览器的应用程序 在portlet容器中运行时 ICEfaces需要区分对待 单个门户网站页面上的portlet为 不同的观点,所以它几乎总是 必要的(因而最安全的) 将此参数设置为true。
例6.19。启用ICEfaces 并发DOM视图功能 WEB-INF / web.xml配置文件如此 在那个单独的portlet上 门户网站页面被视为不同 视图
com.icesoft.faces.concurrentDOMViews 真正
所以,我想知道这个神话般的声音功能是否可能适用于我现有的h:表格,或者它是否只适用于ICEface组件?
任何人都可以提供任何好的建议,让JSF应用程序在多个标签中工作吗?
答案 0 :(得分:7)
在JSF 2.0中,您可以使用视图范围,使用@ViewScoped
进行注释。您甚至可以定义custom scopes。
答案 1 :(得分:4)
我不认为View Scope可以在这里工作。问题是关于多浏览器选项卡场景,我对View Scope的理解是每个视图仍然有一个单独的状态(不是每个选项卡)。换句话说,如果您在多个浏览器选项卡中打开了相同的页面,那么您将面临共享状态的风险。
这里提到:http://www.java.net/node/692109
似乎这个问题只有两种解决方案:1。CDI / Seam会话范围(或类似的东西,其中一个额外的id被添加到请求)或2.坚持请求范围/无状态应用程序。
答案 2 :(得分:3)
MyFaces orchestra有一种处理多个标签/窗口的方法(使用conversationContext
get参数)。
答案 3 :(得分:3)