次の構成があります: JSF: Apache MyFaces JSF-2.1 Core 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>
exp_panel を更新するには、refreshRowExpPanel ボタンの更新プロパティを設定する必要があると思いますが、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 全体が更新され、展開された行が閉じられるため、問題ありません。
おそらくJSから、または他のアイデアから、rowExp内の私のパネルのみを更新する方法を提案してください。
どうも!