当我想运行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>
答案 0 :(得分:1)
首先,您没有标识为display
的组件,但我看到一个标有display1
的组件。其次,display1
位于ID为formateurDetailForm
的表单中。因此,我打赌您的违规更新属性应该说:formateurDetailForm:display1
。
答案 1 :(得分:0)
我认为您应该使用FIREFOX,CHROME或任何资源管理器中已有的工具来识别您需要更新的组件ID。 &#34;右键单击Button或表单上的任何组件,然后选择inspect元素(Q)(这是在FIREFOX上)然后你可以看到你需要使用的内容(更新或任何)&#34;我认为它可以帮助您确切地确定要使用的组件的ID :)。 GL