2013-06-05 2 views
1

я использовал 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

Возможные дубликат: HTTP: // StackOverflow. com/q/8634156/870122 – perissf

ответ

4

Вы используете 'update = ": form: display"' в вашей кнопке, но ваша форма не имеет идентификатора, поэтому ': form' неверен. Если вы даете свою форму id, например. Myform. Тогда вы могли бы использовать: Myform: дисплей

В основном вам нужно взглянуть на Namingcontainers, которые вы должны понимать, чтобы ссылаться на элементы (см, например: Naming Container in JSF2/PrimeFaces)

2

Вы должны установить id = "form" в форме h:. Случайно сгенерированный идентификатор в сообщении об ошибке, который добавляется к идентификатору кнопок, является сгенерированным идентификатором формы. Если вы установите его для формирования идентификатора, который вы использовали, он будет работать. Альтернативой может быть использование относительного идентификатора в обновлении кнопки.

+0

Как использовать относительный идентификатор? –

Смежные вопросы