0

使组件在 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 并不总是存在(这就是重点),因此它不会更新。

4

1 回答 1

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>
于 2012-06-14T10:07:43.233 回答