簡體   English   中英

Primefaces:在p:rowExpansion中更新(刷新)p:panel

[英]Primefaces: Update (refresh) p:panel inside p:rowExpansion

我具有以下配置:JSF:Apache MyFaces JSF-2.1核心API(版本:2.1.10)PrimeFaces 3.4.2 Tomcat 7.0.35

我有一個帶有rowExpansion的DataTable和一個在rowExpansion中帶有按鈕的面板。 當用戶單擊按鈕時,我只想刷新rowExpansion內的面板。

<p:dataTable id="vmt" var="vmtemplate" value="#{myViewBean.myList}" rowKey="#{vmtemplate.id}">
        <p:ajax event="rowToggle" listener="#{myViewBean.onRowToggle}" update=":growl" /> 
     <p:column style="width:2%"><p:rowToggler /></p:column>
     <p:column>...</p:column>
        <p:rowExpansion>
         <p:panel id="exp_panel" header="#{vmtemplate.name} Instances">
      <h:form id="instancesForm">
                                <p:commandButton id="refreshRowExpPanel" title="Refresh" update=":growl" action="#{myViewBean.reloadData}"/> 
          </h:form>                                 
          </p:panel>
     </p:rowExpansion>
</p:dataTable>

我認為我必須設置refreshRowExpPanel按鈕的update屬性才能刷新exp_panel,但是當我將其設置為update =“:growl:expanel”時,我得到一個錯誤:

找不到從“ mainForm:vmt:0:refreshRowExpPanel”引用的標識符為“:expanel”的組件。

因此,面板的生成ID為“ mainForm:vmt:0:refreshRowExpPanel”,但是當我將其指定為更新(update =“:mainForm:vmt:0:refreshRowExpPanel”)時,我得到了相同的錯誤:

找不到從“ mainForm:vmt:0:refreshRowExpPanel”引用的標識符為“:mainForm:vmt:0:refreshRowExpPanel”的組件。

使用update =“:mainForm”可以工作,但是會刷新整個dataTable,並且我的擴展行將被關閉,因此效果不佳。

您能否提出一個解決方案,如何只刷新rowExp內的面板(例如,從JS刷新)或其他任何想法?

謝謝!

我建議您嘗試使用開頭沒有冒號的面板ID,因此:

update="mainForm:vmt:0:refreshRowExpPanel"

另外,您可能想閱讀有關參考資料的文章

我剛剛意識到,我在dataTable之外有一個表格:

<h:form id="outerForm">
<p:dataTable id="vmt" var="vmtemplate" value="#{myViewBean.myList}" rowKey="#{vmtemplate.id}">
pansion>
...
</p:dataTable>
</form>

通過刪除外部表單,並將更新值更改為“ @form”解決了該問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM