2013-06-05 36 views
1

我用數據表中引用 - 行選擇從主要面向用戶的用戶列表,當我運行的頁面我面臨過這樣的錯誤頁面的無法找到標識成分「:形式:顯示」從

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

可能重複:HTTP://計算器。 com/q/8634156/870122 – perissf

回答

4

您正在按鈕中使用'update =':form:'display'',但您的表格沒有id,所以':form'不正確。如果您爲表單提供了一個ID,例如myForm的。然後,你可以使用:myForm的:顯示

基本上你需要看看Namingcontainers,你需要了解的參考元素(參見例如:Naming Container in JSF2/PrimeFaces

2

您必須在h:表格中設置id =「form」。錯誤消息中隨機生成的ID是按鈕ID前面的,是生成的表單ID。如果你設置它來形成你使用的ID將工作。 另一種方法是在按鈕的更新中使用相對ID。

+0

我該如何使用相對ID? –