我有以下配置: JSF: Apache MyFaces JSF-2.1 Core API (Version: 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 按钮的更新属性才能刷新 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,或者任何其他想法?
谢谢!