我使用了DataTable - 来自主要面孔的行选择来显示用户列表,当我运行页面时,我遇到了这个错误
Cannot find component with identifier ":form:display" referenced from "j_idt24:people:0:selectButton".
页面代码
<!-- the part is very important
if we did not put <ui:composition> will will get a very ugly UI
-->
<ui:composition>
<h:head>
<title>Contacts</title>
</h:head>
<!-- the part is very important -->
<body>
<h:form>
<p:growl id="msgs" showDetail="true" />
<p:dataTable id="people" var="person" value="#{personBean.users}">
<p:column headerText="ID" style="width:24%">
<h:outputText value="#{person.id}" />
</p:column>
<p:column headerText="Name" style="width:24%">
<h:outputText value="#{person.name}" />
</p:column>
<p:column headerText="Sex" style="width:24%">
<h:outputText value="#{person.sex}" />
</p:column>
<p:column headerText="Email" style="width:24%">
<h:outputText value="#{person.email}" />
</p:column>
<p:column style="width:4%">
<p:commandButton id="selectButton" oncomplete="personDialog.show()" icon="ui-icon-search" title="View" update=":form:display" >
<f:setPropertyActionListener value="#{person}" target="#{personBean.selectedPerson}" />
</p:commandButton>
</p:column>
</p:dataTable>
<p:dialog header="Person Detail" widgetVar="personDialog" resizable="false" id="perDlg"
showEffect="fade" hideEffect="explode" modal="true">
<h:panelGrid id="display" columns="2" cellpadding="4" style="margin:0 auto;">
<h:outputText value="Name:" />
<h:outputText value="#{personBean.selectedPerson.name}" style="font-weight:bold"/>
<h:outputText value="Sex" />
<h:outputText value="#{personBean.selectedPerson.sex}" style="font-weight:bold"/>
<h:outputText value="Email" />
<h:outputText value="#{personBean.selectedPerson.email}" style="font-weight:bold"/>
</h:panelGrid>
</p:dialog>
</h:form>
</body>
</ui:composition>
</html>
我的代码有什么问题?
答案 0 :(得分:4)
您正在使用'update =“:form:在您的按钮中显示”',但您的表单没有ID,因此':form'不正确。如果您为表单提供了ID,例如myForm的。然后你可以使用:myForm:display
基本上你需要看一下你需要理解的Namingcontainers来引用元素(参见例如:Naming Container in JSF2/PrimeFaces)
答案 1 :(得分:2)
您必须在h:表单中设置id =“form”。错误消息中随机生成的id前缀为按钮id,是表单生成的id。如果您将其设置为形成您使用的ID将起作用。 另一种方法是在更新按钮时使用相对id。