"找不到带有标识符的组件'问题

时间:2014-07-06 14:31:41

标签: jsf primefaces components

我遇到了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'(错误消息)在模板中

非常感谢人们帮助我!

0 个答案:

没有答案