在一个浏览器中使用带有多个选项卡的JSF

时间:2010-07-08 10:19:44

标签: java jsf icefaces jsf-2

默认情况下,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应用程序在多个标签中工作吗?

4 个答案:

答案 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)

Seam与您想要的JSF框架一起使用。

conversation上下文非常适合使用不同的标签。只需在每个标签上开始新的对话即可。 :)

查看Booking demo