0

我收到“找不到从“contentForm:tabView:form:addressBookTable”引用的标识符为“contentForm:tabView:form:addressDialogPanel”的组件”错误。如何更新小部件内的 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>
4

1 回答 1

0

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

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

在此处输入图像描述

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

于 2013-05-02T11:39:18.433 回答