【问题标题】:All tabs of tabpanel refreshed, when event happens in any one of the tab (Richface 3.3.4)当任一选项卡中发生事件时,所有选项卡都会刷新(Richfaces 3.3.4)
【发布时间】:2015-04-01 16:21:50
【问题描述】:

我们有一个tabPanel,它有多个标签。当在任何选项卡中执行任何事件时(例如,单击选项卡 1 中的“ajaxSubmit”按钮),所有选项卡都会刷新,这会导致性能问题(例如,总是从选项卡 3 调用“表”值的 getter)。

我们尝试将每个tab的内容包装在<a4j:region>中,但是tab3中组件的getter仍然被调用。

请在下面找到示例代码sn-p:

<r:tabPanel id="tabWorkingPanel" styleClass="otTMcontainer" selectedTab="#{tabHandlerBean.activeTab}">
    <rich:tab id="tab1">
        <h:commandButton value="ajaxSubmit"/>
    </rich:tab>
    <rich:tab id="tab2" />
    <rich:tab id="tab3">
        <rich:dataTable id="table" value="#{bean.someValue}">...</rich:dataTable>
    </rich:tab>
</r:tabPanel>

【问题讨论】:

  • 看来你误解了h:commandButton 的工作原理。 h:commandButton 默认情况下不执行 ajax,我什至不完全相信它与 Richfaces 组件配合得很好(richfaces 有一些奇怪的地方)。将该命令按钮替换为a4j:commandButton,设置execute="@this"render="tab1"

标签: jsf richfaces tabpanel


【解决方案1】:

我认为您应该使用reRender,以便只刷新相关的选项卡。我认为您还应该将每个选项卡的内容包装在一个表单中,以便在每次提交时不会提交所有内容,尽管这可能是您尝试使用region 所做的事情。我会仔细阅读文档以确保您正确使用这些文档。

我没有使用过 RichFaces,所以我不确定这会起作用,但类似的方法适用于 PrimeFaces。

BalusC's description of process and update 可能有用。他正在讨论 PrimeFaces,但我认为同样的概念也适用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多