UI布局初始化错误-中心窗格元素不存在



我使用的布局结构有centerLayout, westLayout,northLayout

当我运行文件时,我得到以下错误:/UI布局初始化错误。中间窗格元素不存在。中间窗格是必需的元素。"

my template is:

        <p:layoutUnit position="north" size="100" collapsible="true">
            <header>
                <div class="logo1">
                    <img src="#{facesContext.externalContext.requestContextPath}/resources/images/logo1.png" alt="Gestion d'accès et de habilitations" />
                </div>
                <ul>
                    <li><h:link outcome="/profile" value="Profile"/></li>
                    <li><a href="#">Se déconnecté</a></li>
                </ul>
                <div class="logo2">
                    <img src="#{facesContext.externalContext.requestContextPath}/resources/images/logo2.png" alt="Altijari Bank" />
                </div>
            </header>
        </p:layoutUnit>
        <p:layoutUnit position="west" size="210" header="Menus" collapsible="true">
            <h:form id="frmMenu1">
                <p:accordionPanel multiple="true" id="acc" activeIndex="0">
                    <p:tab title="Gestion des agences">
                        <p:menu style="width:100%" id="m1">
                            <p:menuitem value="Consulter" action="#{agenceController.prepareList()}"/>
                            <p:menuitem value="Ajouter" action="#{agenceController.prepareCreate()}" />                                                          
                        </p:menu>
                    </p:tab>
                    <p:tab title="Gestion des utilisateurs">
                        <p:menu style="width:100%"  id="m2">
                            <p:menuitem value="Consulter" action="#{utilisateurController.prepareList()}"/>
                            <p:menuitem value="Ajouter" action="#{utilisateurController.prepareCreate()}" />                                
                        </p:menu>
                    </p:tab>
                    <p:tab title="Gestion des fonctions">
                        <p:menu style="width:100%"  id="m3">
                            <p:menuitem value="Consulter" action="#{fonctionController.prepareList()}"/>
                            <p:menuitem value="Ajouter" action="#{fonctionController.prepareCreate()}" />                             
                        </p:menu>
                    </p:tab> 
                    <p:tab title="Gestion des applications">
                        <p:menu style="width: 100%" id="m4">
                            <p:menuitem value="Consulter" action="#{applicationController.prepareList()}" />
                            <p:menuitem value="Ajouter" action="#{applicationController.prepareCreate()}"/>
                        </p:menu>
                    </p:tab>
                    <p:tab title="Gestion des fiches " >
                        <p:menu style="width: 100%" id="m5">
                            <p:menuitem value="Consulter" action="#{ficheController.prepareList()}"/>
                            <p:menuitem value="Ajouter" action="#{ficheController.prepareCreate()}" />
                        </p:menu>
                    </p:tab> 
                    <p:tab title="Administration" >
                        <p:menu style="width: 100%" id="m6">
                            <p:menuitem value="Consulter" action="#{groupeController.prepareList()}"  />
                            <p:menuitem value="Ajouter" action="#{groupeController.prepareCreate()}" />
                        </p:menu>
                    </p:tab>
                    <p:tab title="Traçabilité" >
                        <p:menu style="width: 100%" id="m7">
                            <p:menuitem value="Consulter" action="#{traceController.prepareList()}" />
                            <p:menuitem value="Ajouter" action="#{traceController.prepareCreate()}" />
                        </p:menu>
                    </p:tab>
                </p:accordionPanel>
            </h:form>
        </p:layoutUnit>

我使用primefaces 3.2, jsf 2.1, glassfish 3.1.2.1

错误信息提示您缺少布局的中心部分。

是必填元素

定义一个类似的:

<p:layoutUnit position="center">
 YOUR CONTENT 
</p:layoutUnit>

当位于中间窗格部分的页面部分出现错误时,会发生这种情况。这可能是无效的xhtml标记、正在调用的bean中的错误或其他原因。

这似乎是一个错误在Primefaces 6.2和已经回答在这里:UI布局初始化错误Primefaces 6.2

在primefaces 5.1中,我遇到了由控制器bean设置选项的情况

<pe:layout id="fullPage" options="#{layoutController.layoutOptions}" stateCookie="true">

在那个控制器中我设置了未定义的子布局窗格

// options for nested center layout
LayoutOptions childCenterOptions = new LayoutOptions();
center.setChildOptions(childCenterOptions);
// options for center-north pane
LayoutOptions centerNorth = new LayoutOptions();
centerNorth.addOption("size", "50%");
childCenterOptions.setNorthOptions(centerNorth);

因此,如果您正在扩展primefaces展示,请确保禁用不存在的窗格上的配置。

由于此错误不会显示在其他缺失的窗格(east, west,…)上,这可能是一个令人头痛的问题。

最新更新