我已经搜索过,但即使实施我发现的解决方案,我也无法实现这一点。我在数据表中选择一行并单击删除按钮以删除所选对象,但该对象被删除但数据表未更新。这是我的代码:
<h:form id="formPesquisa">
...
<h:panelGroup id="panelToRender" layout="block">
<h:panelGroup id="panelDataTable" rendered="#{not empty bean.dataList}" layout="block">
<div id="dataTableRegion">
<p:panel id="panelBtnsUp" styleClass="cleanPanel">
<ui:include src="/templates/btnDataList.xhtml" />
</p:panel>
<h:panelGroup id="panelTableHolder" layout="block">
<p:dataTable id="dataTableBusca" value="#{bean.dataList}" var="entidade"
rendered="#{not empty bean.dataList}" paginator="true" style="width:100%;"
selection="#{bean.entidadesSelecionadas}" onRowSelectUpdate="panelBtnsUp,panelBtnsDown,dataTableBusca"
onRowUnselectUpdate="panelBtnsUp,panelBtnsDown,dataTableBusca" rowUnselectListener="#{bean.rowUnselectListener}" selectionMode="multiple">
<p:column>
<p:graphicImage url="/icons/checkbox_no.png" rendered="#{!bean.containsSelection(entidade)}" />
<p:graphicImage url="/icons/checkbox_yes.png" rendered="#{bean.containsSelection(entidade)}" />
</p:column>
<ui:insert name="colunasPesquisa" />
</p:dataTable>
</h:panelGroup>
<p:panel id="panelBtnsDown" styleClass="cleanPanel">
<ui:include src="/templates/btnDataList.xhtml" />
</p:panel>
</div>
</h:panelGroup>
</h:panelGroup>
....
</h:form>
删除按钮位于包含的文件中:
<div style="margin:5px 0;">
<p:commandButton value="#{msg['commons.excluir']}" image="delete" disabled="#{bean.disableDelete()}" action="#{bean.delete}" update="panelDataTable" />
<p:commandButton value="#{msg['commons.editar']}" image="edit" disabled="#{bean.disableEdit()}" action="#{bean.prepareEdit}" ajax="false" />
</div>
我已经尝试过:
更新= “dataTableBusca”
更新= “panelTableHolder”
更新= “formPesquisa:dataTableBusca”
update =“formPesquisa:panelTableHolder”
我做错了什么???
感谢您的帮助。
答案 0 :(得分:3)
前两种方法仅在您的按钮和更新的元素是兄弟姐妹时才有效。
对于第三种和第四种方法,您必须遍历所有包含元素才能获得正确的ID。你的panelTableHolder位于另外两个h:panelGroup
(panelToRender,panelDataTable)和一个div
(dataTableRegion)。
此外,为确保从最高级别开始,请在表单ID之前添加:。
试试这个:
update=":formPesquisa:panelToRender:panelDataTable:dataTableRegion:panelTableHolder"
如果这是你的panelTableHolder的正确路径,你可以检查渲染的html。