在DOM中永久提供组件的最佳方法是什么?我目前有以下内容:
<h:form id="navigationForm">
<pou:menu id="navigationMenu">
<pou:submenu label="#{web['NavigationMenuLabel']}">
<pou:menuitem value="#{web['NavigationMenuDashboard']}"
action="#{accountData.viewAccountDashboard()}"
update=":accountForm:accounts"/>
<pou:menuitem value="#{web['NavigationMenuRoleOneAccounts']}"
action="#{accountData.viewRoleOneAccounts()}"
update=":accountForm:accounts"/>
</pou:submenu>
</pou:menu>
</h:form>
<h:form id="accountForm" rendered="#{accountData.renderTables()}">
#{accountData.populateDataTable()}
<pou:dataTable id="accounts"
var="account"
paginator="true"
rows="10"
emptyMessage="#{web['NoAccountsData']}"
selection="#{accountData.selectedAccounts}"
rowKey="#{account.uuid}"
value="#{accountData.accountDataModel}">
...
问题是......毫不奇怪,accountForm并不总是存在(这就是重点)所以它不会更新。
答案 0 :(得分:1)
我不知道为什么我之前没想过这个!您需要做的就是包装永久存在的UI组件。我使用<h:panelGroup>
,但我想你可以使用适合你情况的东西。所以在我的情况下:
<h:form id="navigationForm">
<pou:menu id="navigationMenu">
<pou:submenu label="#{web['NavigationMenuLabel']}">
<pou:menuitem value="#{web['NavigationMenuDashboard']}"
action="#{accountData.viewAccountDashboard()}"
update=":example"/>
<pou:menuitem value="#{web['NavigationMenuRoleOneAccounts']}"
action="#{accountData.viewRoleOneAccounts()}"
update=":example"/>
</pou:submenu>
</pou:menu>
</h:form>
<h:panelGroup id="example" layout="block">
<h:form rendered="#{accountData.renderTables()}">
#{accountData.populateDataTable()}
<pou:dataTable id="accounts"
var="account"
paginator="true"
rows="10"
emptyMessage="#{web['NoAccountsData']}"
selection="#{accountData.selectedAccounts}"
rowKey="#{account.uuid}"
value="#{accountData.accountDataModel}">
...
</h:panelGroup>