我遇到了JSF页面的问题。 我正在使用primefaces 3.4
我想更新一个小组。
错误消息
javax.faces.FacesException: Cannot find component with identifier ":mainform:panelValeurs" referenced from "menuform:mainform:table_ligne:0:j_idt93".
网页代码
<f:view xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<ui:composition template="/template.xhtml" id="principal">
<ui:define name="breadcrumb">
<p:breadCrumb>
<p:menuitem action="#{sessionBean.goToHomePage()}" />
<p:menuitem value="#{bundle.menu_listes_choix}" action="#{listeChoixBean.goToListeChoix()}" />
<p:menuitem value="#{bundle.liste_choix_listes_valeur}" action="#{listeChoixBean.goToListeValeurList()}"/>
<p:menuitem value="#{listeChoixBean.selectedListeValeur.libelleCourt}"/>
</p:breadCrumb>
</ui:define>
<ui:define name="corps">
<h:form id="mainform">
<p:messages autoUpdate="true" closable="true" escape="false"
showDetail="true" showSummary="false"/>
<h:panelGroup id="listeValeurForm">
<!-- Informations generales -->
<p:panel>
<f:facet name="header">
<h:outputText value="#{bundle.informations_generales}" />
</f:facet>
<h:panelGroup layout="block">
<h:panelGrid columns="4" columnClasses="grid-col-label, grid-col-value, grid-col-label, grid-col-value"
rowClasses="grid-row" styleClass="grid">
<p:outputLabel value="#{bundle.libelle_court}" for="liste-lib-court"/>
<p:inputText id="liste-lib-court" label="#{bundle.libelle_court}"
value="#{listeChoixBean.selectedListeValeur.libelleCourt}"
maxlength="128" required="true" />
<p:outputLabel value="#{bundle.libelle_long}" for="liste-lib-long"/>
<p:inputText id="liste-lib-long" label="#{bundle.libelle_long}"
value="#{listeChoixBean.selectedListeValeur.libelleLong}"
maxlength="256" />
</h:panelGrid>
<h:panelGroup layout="block" styleClass="row">
<p:outputLabel value="#{bundle.description}" for="liste-description"
styleClass="col-md-12 grid-col-label"/>
<h:panelGroup layout="block" styleClass="row center">
<p:inputTextarea id="liste-description" label="#{bundle.description}"
value="#{listeChoixBean.selectedListeValeur.description}"
styleClass="col-md-6"/>
</h:panelGroup>
</h:panelGroup>
</h:panelGroup>
</p:panel>
</h:panelGroup>
<p:spacer height="20" />
<!-- Valeurs -->
<p:panel id="panelValeurs">
<f:facet name="header">
<h:outputText value="#{bundle.liste_valeur_valeurs}" />
</f:facet>
<h:panelGroup rendered="#{listeChoixBean.modeLigneEdit == null}">
<h:panelGroup layout="block" styleClass="panel-actions"
rendered="#{listeChoixBean.modePageEdit == 'EDIT'}" >
<p:commandButton value="#{bundle.nouveau}" icon="ui-icon-disk"
action="#{listeChoixBean.addListeValeurLigne()}"
process="@this" update="panelValeurs"/>
</h:panelGroup>
<p:dataTable id="table_ligne" widgetVar="listeValeurLigneList"
value="#{listeChoixBean.selectedListeValeur.lignes}"
var="ligne" rowKey="#{ligne.idLigne}"
rows="10" rowsPerPageTemplate="10,25,50"
paginator="true" paginatorPosition="bottom" paginatorAlwaysVisible="false"
paginatorTemplate="{FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
emptyMessage="#{bundle.datatable_emptymessage}"
rowStyleClass="objet_actif_#{ligne.actif}">
<p:column id="col-code">
<f:facet name="header">
<h:outputText value="#{bundle.code}" />
</f:facet>
<h:outputText value="#{ligne.code}"/>
</p:column>
<p:column id="col-libelle">
<f:facet name="header">
<h:outputText value="#{bundle.libelle_court}" />
</f:facet>
<h:outputText value="#{ligne.libelleCourt}"/>
</p:column>
<p:column id="col-actions" styleClass="table-col-actions"
rendered="#{listeChoixBean.modePageEdit == 'EDIT'}">
<f:facet name="header">
<h:outputText value="#{bundle.actions}" />
</f:facet>
<p:commandButton
title="#{bundle.modifier}" icon="ui-icon-pencil"
action="#{listeChoixBean.editListeValeurLigne()}"
process="@this" update=":mainform:panelValeurs">
<f:setPropertyActionListener target="#{listeChoixBean.selectedListeValeurLigne}" value="#{ligne}" />
</p:commandButton>
<p:commandButton
title="#{bundle.visualiser}" icon="ui-icon-search"
action="#{listeChoixBean.viewListeValeurLigne()}"
process="@this" update=":mainform:panelValeurs">
<f:setPropertyActionListener target="#{listeChoixBean.selectedListeValeurLigne}" value="#{ligne}" />
</p:commandButton>
</p:column>
</p:dataTable>
</h:panelGroup>
<h:panelGroup rendered="#{listeChoixBean.modeLigneEdit != null}">
<h:panelGroup id="listeValeurLigneForm">
<h:panelGroup layout="block"
rendered="#{listeChoixBean.selectedListeValeurLigne ne null}">
<h:panelGroup layout="block">
<h:panelGrid columns="4" columnClasses="grid-col-label, grid-col-value, grid-col-label, grid-col-value"
rowClasses="grid-row" styleClass="grid">
<p:outputLabel value="#{bundle.code}" for="ligne-code"/>
<p:inputText id="ligne-code" label="#{bundle.code}"
value="#{listeChoixBean.selectedListeValeurLigne.code}"
maxlength="100" required="true" />
<p:outputLabel value="#{bundle.abreviation}" for="ligne-abreviation"/>
<p:inputText id="ligne-abreviation" label="#{bundle.abreviation}"
value="#{listeChoixBean.selectedListeValeurLigne.abreviation}"
maxlength="100"/>
<p:outputLabel value="#{bundle.libelle_court}" for="ligne-lib-court"/>
<p:inputText id="ligne-lib-court" label="#{bundle.libelle_court}"
value="#{listeChoixBean.selectedListeValeurLigne.libelleCourt}"
maxlength="128" required="true" />
<p:outputLabel value="#{bundle.libelle_long}" for="ligne-lib-long"/>
<p:inputText id="ligne-lib-long" label="#{bundle.libelle_long}"
value="#{listeChoixBean.selectedListeValeurLigne.libelleLong}"
maxlength="256"/>
<p:outputLabel value="#{bundle.defaut}" for="ligne-defaut"/>
<p:selectBooleanCheckbox id="ligne-defaut" label="#{bundle.defaut}"
value="#{listeChoixBean.selectedListeValeurLigne.defaut}" />
<p:outputLabel value="#{bundle.actif}" for="ligne-actif"/>
<p:selectBooleanCheckbox id="ligne-actif" label="#{bundle.actif}"
value="#{listeChoixBean.selectedListeValeurLigne.actif}" />
</h:panelGrid>
<h:panelGroup layout="block" styleClass="row">
<p:outputLabel value="#{bundle.description}" for="ligne-description"
styleClass="col-md-12 grid-col-label"/>
<h:panelGroup layout="block" styleClass="row center">
<p:inputTextarea id="ligne-description" label="#{bundle.description}"
value="#{listeChoixBean.selectedListeValeurLigne.description}"
styleClass="col-md-8"/>
</h:panelGroup>
</h:panelGroup>
</h:panelGroup>
<h:panelGroup layout="block" styleClass="panel-actions">
<p:commandButton value="#{bundle.enregistrer}" icon="ui-icon-disk"
rendered="#{listeChoixBean.modeLigneEdit != 'VIEW'}"
action="#{listeChoixBean.saveListeValeurLigne()}"
process="@this listeValeurLigneForm" update="panelValeurs"/>
<p:commandButton value="#{bundle.annuler}"
icon="ui-icon-arrowreturnthick-1-w"
action="#{listeChoixBean.cancelListeValeurLigne()}"
process="@this" update="panelValeurs"/>
</h:panelGroup>
</h:panelGroup>
</h:panelGroup>
</h:panelGroup>
</p:panel>
<h:panelGroup layout="block" styleClass="panel-actions">
<p:commandButton value="#{bundle.sauvegarder}" icon="ui-icon-disk"
rendered="#{listeChoixBean.modePageEdit == 'EDIT'}"
action="#{listeChoixBean.saveListeValeur()}"
process="@this listeValeurForm" />
<p:commandButton value="#{bundle.annuler}" icon="ui-icon-arrowreturnthick-1-w"
action="#{listeChoixBean.goToListeValeurList()}"
process="@this mainform" />
</h:panelGroup>
</h:form>
</ui:define>
</ui:composition>
问题在于此按钮的“更新”
<p:commandButton
title="#{bundle.modifier}" icon="ui-icon-pencil"
action="#{listeChoixBean.editListeValeurLigne()}"
process="@this" update=":mainform:panelValeurs">
<f:setPropertyActionListener target="#{listeChoixBean.selectedListeValeurLigne}" value="#{ligne}" />
</p:commandButton>
'更新'值以“:”开头,所以我不明白为什么它不起作用。 信息:'menuform'(错误消息)在模板中
非常感谢人们帮助我!