我们有一个tabPanel
,它有多个标签。当在任何选项卡中执行任何事件时(例如,单击tab1中的'ajaxSubmit'按钮),所有选项卡都会刷新,这会导致性能问题(例如,总是从tab3调用'table'值的getter)。
我们尝试将每个标签的内容包装在<a4j:region>
中,但仍会调用tab3中组件的getter。
请在下面找到示例代码段:
<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>
答案 0 :(得分:1)
我认为您应该使用reRender
,以便只刷新相关标签。我认为你还应该在表单中包含每个选项卡的内容,这样就不会在每次提交时提交所有内容,尽管这可能是你试图用region
做的事情。我会仔细阅读文档,以确保您正确使用这些文档。
我没有使用RichFaces,所以我不肯定这会起作用,但类似的方法适用于PrimeFaces。
BalusC's description of process
and update
可能有用。他正在讨论PrimeFaces,但我认为同样的概念适用。