1

场景是这样的。我有一个 Rich:tabPanel 大约有 5 个选项卡。在第一个选项卡上有一个丰富的:数据表。当我单击第一列的元素 (a4j:commandLink) 时,我得到另一个 rich:datatable。当我单击此表的第一列元素 (a4j:commandLink) 时,我更改了我有另一个丰富的选项卡:数据表,并且与上面相同。上一个选项卡的约束用于获取当前选项卡的元素。如果我直接单击选项卡,我将获得与该选项卡相关的所有元素。每个rich:datatable 引用不同的表。每个表都是相互关联的。每个选项卡都指向一个托管 bean。我在后端使用休眠。

问题现在开始。我不希望托管 bean 是基于会话或应用程序的,因为要存储许多变量。如果我给出请求范围,就会发生以下事情。选项卡中的第一个表完美呈现,但是当我单击第一列时,第二个表不使用所有约束,因为范围是请求,例如 actionlistener。我应该做些什么 ?

我可以做的一件事是为每个表定义一个托管 bean。或强行使用会话范围。或者还有其他方法吗?请帮忙。

谢谢。

4

2 回答 2

2

如果您使用的是 Richfaces 3.0.0 或更高版本,您可以使用标签来注释您的 bean@KeepAlive 或使用标签<a4j:keepAlive beanName="#{bean}" />。这等效于 JSF 2.0 中的视图范围。

于 2011-03-06T08:00:10.630 回答
1

如果您已经使用 JSF 2.0,请使用视图范围。只要您与同一页面交互(独立于浏览器选项卡/会话!),它就一直存在。

如果您仍在使用 JSF 1.x,请使用<a4j:keepAlive beanName="#{bean}" />在视图中声明的请求范围。它的行为类似于 JSF 2.0 视图范围。

于 2011-03-06T04:04:16.540 回答