[英]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刷新)或其他任何想法?
謝謝!
我剛剛意識到,我在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.