【问题标题】:primefaces panelgrid update from datatable从数据表更新primefaces panelgrid
【发布时间】:2013-05-02 10:54:23
【问题描述】:

我收到“找不到从“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>

【问题讨论】:

  • @ÖmerFarukAlmalı 我已将 contentForm(form) 更改为面板。现在它给出了“无法找到从“tabView:form:addressBookTable”引用的标识符为“tabView:form:addressDialogPanel”的组件”错误。 p:tabview 也是一种形式吗?
  • @ÖmerFarukAlmalı 你的回答对我不起作用。会不会有问题?
  • 那你为什么不回复我呢?如果你愿意解决你的问题,你应该遵循完全正确的回答的必要步骤。迟到 3 天的“不工作”评论是不合理的行为。

标签: jsf primefaces


【解决方案1】:

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

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

您应该阅读以了解 JSF 的基础知识,例如来自 here

【讨论】:

    猜你喜欢
    • 2014-11-27
    • 1970-01-01
    • 1970-01-01
    • 2017-08-17
    • 2015-03-04
    • 2013-10-10
    • 2014-10-08
    • 2013-09-15
    • 1970-01-01
    相关资源
    最近更新 更多