找不到标识符为JSF的组件

时间:2013-08-13 21:23:32

标签: jsf netbeans primefaces

当我想运行jsf页面时,我得到了这个错误

javax.faces.FacesException:找不到标题为“:form1:display”的组件,引用自“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>

2 个答案:

答案 0 :(得分:1)

首先,您没有标识为display的组件,但我看到一个标有display1的组件。其次,display1位于ID为formateurDetailForm的表单中。因此,我打赌您的违规更新属性应该说:formateurDetailForm:display1

答案 1 :(得分:0)

我认为您应该使用FIREFOX,CHROME或任何资源管理器中已有的工具来识别您需要更新的组件ID。 &#34;右键单击Button或表单上的任何组件,然后选择inspect元素(Q)(这是在FIREFOX上)然后你可以看到你需要使用的内容(更新或任何)&#34;我认为它可以帮助您确切地确定要使用的组件的ID :)。 GL