2013-08-13 2 views
0

Когда я хотел бы запустить JSF страницу, я получил эту ERREURНе удается найти компонент с идентификатором JSF

javax.faces.FacesException: Не удается найти компонент с идентификатором «: form1: дисплей» ссылка из «Form1: formateur» ,

Это JSF PAGE (index.xhtml) JSF + primefaces

NetBeans
<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:h="http://xmlns.jcp.org/jsf/html" 
     xmlns:p="http://primefaces.org/ui" 
     xmlns:f="http://xmlns.jcp.org/jsf/core"> 
    <h:head> 
     <title>Gestion de réservation pour une formation</title> 
    </h:head> 
    <script type="text/javascript"> 
    function handleSubmitRequest(xhr, status, args, dialogName, formName) { 
      dialog = jQuery('#'+dialogName); 
     if(args.validationFailed) { 
      dialog.effect("shake", { times:3 }, 100); 
     } else { 
      clearForm(formName); 
      ; 
      formateurDialog.hide(); 
     } 
    } 
    function clearForm(formName){ 
     jQuery('#'+formName).each(function(){ 
      this.reset(); 
    }); 
    } 
</script> 
    <h:body> 
     <p:layout fullPage="true"> 
      <p:layoutUnit position="north" size="150"> 
       <center> <h1>Gestion de réservation pour une formation</h1></center> 
      </p:layoutUnit> 
      <p:layoutUnit position="west" size="200" rendered="true" collapsible="true" resizable="true" closable="true" header="menu"> 
       <h:form> 
        <p:commandLink value="Nouveau formateur" actionListener="#{formateurController.preparerajouterFormateur(actionEvent)}" onclick="dlgFormateur.show();" /> 
       </h:form> 
      </p:layoutUnit> 
      <p:layoutUnit position="center"> 

        <p:dialog widgetVar="dlgFormateur" resizable="false" height="400" width="450" header="Ajout formateur" position="center"> 
       <h:form id="newFormateurForm"> 
        <p:panelGrid columns="2"> 
         <h:outputText value="nom"/> 
         <p:inputText id="adresse2" value="#{formateurController.formateurs.adresse}"/> 

         <h:outputText value="cin"/> 
         <p:inputText id="cin2" value="#{formateurController.formateurs.cin}"/> 

         <h:outputText value="email"/> 
         <p:inputText id="email2" value="#{formateurController.formateurs.email}"/> 

         <h:outputText value="nom"/> 
         <p:inputText id="nom2" value="#{formateurController.formateurs.nom}"/> 

         <h:outputText value="prenom"/> 
         <p:inputText id="prenom2" value="#{formateurController.formateurs.prenom}"/> 

         <h:outputText value="pseudo"/> 
         <p:inputText id="pseudo2" value="#{formateurController.formateurs.pseudo}"/> 

         <h:outputText value="sexe"/> 
         <p:inputText id="sexe2" value="#{formateurController.formateurs.sexe}"/> 

         <h:outputText value="telephone"/> 
         <p:inputText id="telephone2" value="#{formateurController.formateurs.telephone}"/> 

         <p:commandButton value="enregistrer" id="eng" actionListener="#{formateurController.ajouter(actionEvent)}" update=":form1:formateur" oncomplete="dlgFormateur.hide()"/> 

        </p:panelGrid> 
       </h:form> 
       </p:dialog> 

       <h:form id="form1">  
        <p:dataTable id="formateur" value="#{formateurController.listFormateurs}" var="formateur" rowKey="#{formateur.formateurId}" paginator="true" rows="10" selection="#{formateurController.selectedFormateur}" selectionMode="single" filteredValue="#{formateurController.filteredFormateurs}" rowsPerPageTemplate="5,10,20,30"> 
         <p:ajax event="rowSelect" update=":form1:display" oncomplete="formateurDialog.show()" /> 
         <f:facet name="header"> 
          List of Formateurs 
         </f:facet> 

         <p:column headerText="Id" sortBy="#{formateur.formateurId}" filterBy="#{formateur.formateurId}" id="id_formateur"> 
          #{formateur.formateurId} 

          <p:commandLink value="#{formateur.formateurId}" update=":formateurDetailForm:display1" oncomplete="formateurDialog.show()" title="View"> 
           <f:setPropertyActionListener value="#{formateur}" target="#{formateurController.selectedFormateur}" />  
          </p:commandLink> 
         </p:column> 

         <p:column headerText="Adresse" sortBy="#{formateur.adresse}" filterBy="#{formateur.adresse}" id="adresse"> 
          #{formateur.adresse} 
         </p:column> 

         <p:column headerText="CIN" sortBy="#{formateur.cin}" filterBy="#{formateur.cin}" id="cin"> 
          #{formateur.cin} 
         </p:column> 

         <p:column headerText="Email" sortBy="#{formateur.email}" filterBy="#{formateur.email}" id="email"> 
          #{formateur.email} 
         </p:column> 
         <p:column headerText="Nom" sortBy="#{formateur.nom}" filterBy="#{formateur.nom}" id="nom"> 
          #{formateur.nom} 
         </p:column> 
         <p:column headerText="Prenom" sortBy="#{formateur.prenom}" filterBy="#{formateur.prenom}" id="prenom"> 
          #{formateur.prenom} 
         </p:column> 
         <p:column headerText="Pseudo" sortBy="#{formateur.pseudo}" filterBy="#{formateur.pseudo}" id="pseudo"> 
          #{formateur.pseudo} 
         </p:column> 
         <p:column headerText="Sexe" sortBy="#{formateur.sexe}" filterBy="#{formateur.sexe}" id="sexe"> 
          #{formateur.sexe} 
         </p:column> 
         <p:column headerText="Telephone" sortBy="#{formateur.telephone}" filterBy="#{formateur.telephone}" id="telephone"> 
          #{formateur.telephone} 
         </p:column> 
         <p:column> 
          <f:facet name="header"> 
           <h:outputText value="Excluir" /> 
          </f:facet> 
          <p:commandLink value="Excluir" action="#{formateurController.exclure()}" onclick="if(!confirm('Existe déjà #{formateur.nom}?'))return false;" update =":form1:formateur"/> 
         </p:column> 



        </p:dataTable> 
        </h:form> 




        <p:dialog header="Formateur Detail" widgetVar="formateurDialog" resizable="false" id="formateurDlg" > 
       <h:form id="formateurDetailForm"> 
       <p:panelGrid id="display1" columns="2" style="margin:0 auto;"> 
      <h:outputText value="Adresse :"></h:outputText> 
         <h:outputText value="#{formateurController.selectedFormateur.adresse}" /> 

      <h:outputText value="cin :"></h:outputText> 
         <h:inputText value="#{formateurController.selectedFormateur.cin}" required="true" requiredMessage="Please Enter Name!"/> 

      <h:outputText value="email :"></h:outputText> 
         <h:inputText value="#{formateurController.selectedFormateur.email}" required="true" requiredMessage="Please Enter Lastname!"/> 

      <h:outputText value="nom :"></h:outputText> 
         <h:inputText value="#{formateurController.selectedFormateur.nom}"/> 



      <h:outputText value="prenom :"></h:outputText> 
         <h:inputText value="#{formateurController.selectedFormateur.prenom}"/> 

      <h:outputText value="pseudo :"></h:outputText> 
         <h:inputText value="#{formateurController.selectedFormateur.pseudo}"/> 

      <h:outputText value="sexe :"></h:outputText> 
      <h:inputText value="#{formateurController.selectedFormateur.sexe}"/> 

      <h:outputText value="telephone :"></h:outputText> 
      <h:inputText value="#{formateurController.selectedFormateur.telephone}" /> 
        <f:facet name="footer"> 
         <p:commandButton value="Update" update=":form1:dataTable, :growl" oncomplete="handleSubmitRequest(xhr, status, args, 'formateurDlg','newUserForm'); " actionListener="#{formateurController.modifier(actionEvent)}"/> 
        </f:facet> 
       </p:panelGrid> 
      </h:form> 
      </p:dialog> 

<p:growl id="growl" showDetail="true" life="5000" /> 



      </p:layoutUnit> 
     </p:layout> 
    </h:body> 
</html> 
+0

Возможный дубликат [Как ссылаться на компоненты в JSF ajax? Не удается найти компонент с идентификатором «foo» в поле зрения] (http://stackoverflow.com/questions/8634156/how-to-reference-components-in-jsf-ajax-cannot-find-component-with-identifier) – BalusC

ответ

1

Во-первых, у вас нет компонента с идентификатором display, но я вижу один с display1. Во-вторых, display1 находится внутри формы с идентификатором formateurDetailForm. Поэтому, я уверен, ваш нарушительный атрибут обновления должен сказать :formateurDetailForm:display1.

0

Я думаю, вы должны использовать инструмент, уже имеющий внутри FIREFOX, CHROME или любой проводник, чтобы идентифицировать идентификатор компонента для того, что вам нужно для ОБНОВЛЕНИЯ. «Используя правый щелчок на кнопке или любом компоненте в форме и выбрав элемент проверки (Q) (это на FIREFOX), а затем вы можете увидеть id, что вам нужно использовать (обновление или любое)», я думаю, что это может помочь вам точно определить какой идентификатор компонента использовать :). GL

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