来自datatable的primefaces panelgrid更新

时间:2013-05-02 10:54:23

标签: jsf primefaces

我得到“无法找到带标识符的组件”contentForm:tabView:form:addressDialogPanel“引自”contentForm:tabView:form:addressBookTable“”错误。如何更新widget中的panelGrid?

<h:form id="form">

<p:dataTable id="addressBookTable">
 <p:ajax event="rowSelect" listener="#{addressBookController.onRowSelect}"   
                update="contentForm:tabView:form:addressDialogPanel" oncomplete="addressDialog.show()" />
</p:dataTable>

<p:dialog id="addressDialogId" widgetVar="addressDialog">
  <h:panelGrid id="addressDialogPanel" columns="2" cellpadding="4">
  </h:panelGrid>
</p:dialog>

</h:form>

1 个答案:

答案 0 :(得分:0)

主要问题是您提供了错误的组件客户端ID。 p:tabView也是一个不是表格的组件。定义h:form时,它会生成标准HTML表单元素。当您提交页面时,JSF使用POST将您的数据提交到支持bean。所以嵌套它们会发生很多你不期望的问题。您应该将表单分成sideForm或searchForm等部分。

尝试更新组件时,应检测组件的正确客户端ID。您可以使用浏览器的开发人员设置执行此操作(按f12键显示chrome)。然后使用放大镜按钮选择组件并将该ID提供给update属性。就像这里一样:

enter image description here

您应该阅读以学习JSF的基础知识,例如here