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

And*_*rew 8 java jsf icefaces jsf-2

默认情况下,JSF似乎非常"有状态".我需要允许人们使用我们的应用程序,多个选项卡在应用程序的不同部分执行许多操作.

如果没有大量的重新设计,我似乎无法找到合适的指令来实现这一目标.

我们目前没有使用ICEfaces,但我刚在ICEfaces文档中找到了这个:

6.5.7.ICEfaces Portlet和并发DOM视图

ICEfaces提供了一个名为Concurrent DOM Views的功能,它控制ICEfaces框架是否支持来自同一浏览器的单个应用程序的多个视图.在portlet容器中运行时,ICEfaces需要将单个门户网站页面上的单独portlet视为不同的视图,因此几乎总是需要(因此最安全)将此参数设置为true.

例6.19.在WEB-INF/web.xml配置文件中启用ICEfaces并发DOM视图功能,以便将同一门户网站页面上的单独portlet视为不同视图

com.icesoft.faces.concurrentDOMViews是的

所以,我想知道这个神话般的声音功能是否可能适用于我现有的h:表格或者它是否只适用于ICEface组件?

任何人都可以提供任何好的建议,让JSF应用程序在多个选项卡中工作?

Bal*_*usC 7

在JSF 2.0中,您可以使用视图范围,使用注释@ViewScoped.您甚至可以定义自定义范围.

也可以看看:

  • 每个选项卡都有自己的视图范围bean.它始终在GET请求上创建,并且只能通过GET请求打开选项卡. (5认同)
  • 那是对的. (2认同)

Rya*_*yan 5

我认为 View Scope 在这里不起作用。这个问题特别是关于多浏览器选项卡场景,我对 View Scope 的理解是每个视图(而不是每个选项卡)仍然有一个单独的状态。换句话说,如果您在多个浏览器选项卡中打开同一页面,那么您就有共享状态的风险。

这是在这里提到的:http : //www.java.net/node/692109

似乎这个问题只有两种解决方案:1. CDI/Seam 对话范围(或类似的东西,其中向请求添加了额外的 id)或 2. 坚持请求范围/无状态应用程序。