0

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

javax.faces.FacesException:找不到从“form1:formateur”引用的标识符为“:form1:display”的组件。

这是 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>
4

2 回答 2

1

首先,您没有带有 id 的组件display,但我看到一个带有display1. 其次,display1在带有 id 的表单内formateurDetailForm。因此,我敢打赌您的违规更新属性应该是:formateurDetailForm:display1.

于 2013-08-13T21:32:23.380 回答
0

我认为您应该使用 FIREFOX、CHROME 或任何资源管理器中已有的工具来识别您需要更新的组件 ID。“使用右键单击按钮或表单上的任何组件并选择检查元素(Q)(这是在 FIREFOX 上),然后您可以看到 id 需要使用的内容(更新或任何)”我认为它可以帮助您准确识别要使用的组件 id :)。总帐

于 2013-08-15T09:43:41.490 回答