pe:masterDetail - MenuItem必须在表单元素内(?)

时间:2013-05-23 10:41:08

标签: jsf-2 primefaces primefaces-extensions

我正在使用masterDetail组件来显示一些东西。首先,我将整个masterDetail-Component嵌套在-Tag中。在我注意到我必须在masterDetail组件中使用表单后,我删除了表单标签以避免不允许的嵌套表单。

<ui:define name="center">
        <p:growl id="infoMessage" sticky="false" />
        <p:layoutUnit position="center" style="border-width: 0px">

            <p:panel id="panel">

                <pe:masterDetail showBreadcrumb="true" selectLevelListener="#{logic.selectLevel}">

                    <f:facet name="header">
                        <p:messages showDetail="false" showSummary="true" />
                    </f:facet>

                    <pe:masterDetailLevel level="1"
                        levelLabel="#{ivy.cms.co('/Labels/Mitarbeiterauswahl')}">
                        <h:panelGrid columns="3" cellpadding="5">

                            <p:outputLabel for="name" value="#{ivy.cms.co('/Labels/Mitarbeiter')}" />
                            <p:inputText id="name" value="#{data.nameSuche}" />
                            <p:commandButton value="#{ivy.cms.co('/Labels/Buttons/Suchen')}"
                                actionListener="#{logic.RD_Suchen}" update="mitarbeitersuche" />

                        </h:panelGrid>

                        <p:dataTable value="#{data.mitarbeiter.rsMitarbeiter}" var="mitarbeiter"
                            id="mitarbeitersuche">
                            <p:column headerText="#{ivy.cms.co('/Labels/Nachname')}">
                                <h:outputText value="#{mitarbeiter['nachnamemita']}" />
                            </p:column>

                            <p:column headerText="#{ivy.cms.co('/Labels/Vorname')}">
                                <h:outputText value="#{mitarbeiter['vornamemita']}" />
                            </p:column>

                            <p:column headerText="#{ivy.cms.co('/Labels/Kostenstellennr')}">
                                <h:outputText value="#{mitarbeiter['nrkost']}" />
                            </p:column>

                            <p:column headerText="#{ivy.cms.co('/Labels/Kostenstelle')}">
                                <h:outputText value="#{mitarbeiter['beschreibungkost']}" />
                            </p:column>

                            <p:column headerText="#{ivy.cms.co('/Labels/email')}">
                                <h:outputText value="#{mitarbeiter['emailmita']}" />
                            </p:column>

                        </p:dataTable>

                    </pe:masterDetailLevel>


                </pe:masterDetail>


            </p:panel>

        </p:layoutUnit>
    </ui:define>

现在抛出异常:

MenuItem must be inside a form element
  

viewId = /实例/ 13ED0EF71F61E4D5 / MitarbeiterdatenJSF.xhtml   位置= C:\用户\ nweis.FREICON \桌面\ xivy5 \ web应用\常春藤\实例\ 13ED0EF71F61E4D5 \ MitarbeiterdatenJSF.xhtml   phaseId = RENDER_RESPONSE(6)

     

引起:   javax.faces.FacesException - MenuItem必须位于表单元素中   在org.primefaces.component.menu.BaseMenuRenderer.encodeMenuItem(BaseMenuRenderer.java:92)

这让我很困惑,因为在PrimefacesExtension-Team提供的代码示例中,没有形式元素周围的pe:masterDetail see here。也许有人可以帮我一把。

1 个答案:

答案 0 :(得分:2)

我们有一个围绕pe的表单元素:masterDetail当然。它很简单,不会在代码中显示,因为表单位于主模板中。当然,MenuItem应该在一个表单内,因此也应该是整个MasterDetail。 MenuItem是一个命令组件,每个命令组件都应该在一个表单中。