tabpanel中非活动选项卡中的数据表初始化值

时间:2012-01-12 15:53:23

标签: java richfaces seam

我刚刚在我们的应用程序中发现了一个奇怪的行为。

我们有一个rich:tabPanel switchType =“ajax”,带有多个标签。每个选项卡都包含一个rich:dataTable和一个带有a4j:form的编辑表单。

现在,当我们请求页面时,将呈现第一个选项卡并初始化数据表。到现在为止还挺好。 用户现在可以单击编辑链接(a4j:commandLink)以使用所选实体重新编辑编辑表单,并正确地重新生成表单。

但是:除此之外,我们从其他选项卡上的数据表中获取查询...即使选项卡不活动,也会初始化富数据表。未呈现,因为选项卡处于非活动状态 奇怪的是,如果我使用普通的h:dataTable,问题就会消失,即没有为此提取结果列表。

到目前为止,我有两个解决方法:

  1. 如果我在editLink上使用limitToList,似乎处理部分工作正常但这意味着我们必须调整所有命令按钮/链接,如果我不将它的id包含在内,全局消息就会停止工作reRendered属性......

  2. 我可以将选定的Tab绑定到辅助bean,并仅使用s:fragment

  3. 呈现活动选项卡的内容

    虽然第二个解决方案很直接,而我现在正在使用这个解决方案,但我仍在寻求解释。

    是否有人已经遇到过这种行为并且正在进行解释?

    由于 马丁

2 个答案:

答案 0 :(得分:0)

我们确实遇到了这个问题,在执行任何ajax操作时几乎所有组件都会被渲染。

我们解决了这个问题,购买添加limitRender =“true”属性到组件和周围的组件< a4j:outPutPanel axajRender =“false”/> < rich:messages ajaxRendered =“false”/>。

然而,rich:tabPanel的属性limitRender =“true”,如果使用或不使用,它没有显示任何差异。

还记得使用< a4j:queue ignoreDupResponses =“true”/>作为有助于优化Ajax请求的最佳实践。在表格中使用此标签。

答案 1 :(得分:0)

在标签内使用<a4j:region>来限制jsf树处理