【问题标题】:Datatable in inactive tab in tabpanel initializes value选项卡面板中非活动选项卡中的数据表初始化值
【发布时间】:2012-01-12 15:53:22
【问题描述】:

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

我们有一个丰富的:tabPanel switchType="ajax" 与多个选项卡。每个选项卡都包含一个rich:dataTable 和一个带有a4j:form 的编辑表单。

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

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

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

  1. 如果我在 editLink 上使用 limitToList,似乎处理部分工作正常,但这意味着我们必须调整所有命令按钮/链接,如果我不将它的 id 包含到重新渲染属性...

  2. 我可以将选定的选项卡绑定到支持 bean 并使用 s:fragment 仅呈现活动选项卡的内容

虽然第二种解决方案非常简单,我现在正在使用这个解决方案,但我仍在寻求解释。

是否有人已经遇到过这种行为并且对正在发生的事情有解释?

谢谢 马丁

【问题讨论】:

    标签: java richfaces seam


    【解决方案1】:

    我们确实有这个问题,几乎所有组件都会在执行任何 ajax 操作时呈现。

    我们解决了这个问题,购买向组件添加 limitRender="true" 属性并通过 包围组件 .

    但是,rich:tabPanel 具有属性 limitRender="true" ,无论是否使用它都没有显示出任何区别。

    还记得使用 作为有助于优化 Ajax 请求的最佳实践。在表单中使用这个标签。

    【讨论】:

      【解决方案2】:

      在选项卡内使用<a4j:region> 来限制jsf 树处理

      【讨论】:

        猜你喜欢
        • 2021-12-30
        • 2012-08-14
        • 2015-10-20
        • 2013-03-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多