0

異なる場所に表示する 3 つの ui:insert タグを含むテンプレートがあります。私の作成ユーザーページには、これがあります:

<ui:composition template="/template.xhtml">
        <ui:define name="title">
            <h:outputText value="#{bundle.CreateEmployeesTitle}"></h:outputText>
        </ui:define>
        <ui:define name="body">
            <h:panelGroup id="messagePanel" layout="block">
                <h:messages errorStyle="color: red" infoStyle="color: green" layout="table"/>
            </h:panelGroup>
            <h:form>
                <h:panelGrid columns="2">
                    <h:outputLabel value="#{bundle.CreateEmployeesLabel_businessUnitId}" for="businessUnitId" />
                    <h:selectOneMenu id="businessUnitId" value="#{employeesController.selected.businessUnitId}">
                        <f:selectItems value="#{businessUnitController.items}" var="a" itemLabel="#{a.description}" itemValue="#{a.id}" />
                    </h:selectOneMenu>
                    <h:outputLabel value="#{bundle.CreateEmployeesLabel_employeeTypesId}" for="employeeTypesId" />
                    <h:selectOneMenu id="employeeTypesId" value="#{employeesController.selected.employeeTypesId}">
                        <f:selectItems value="#{employeeTypesController.items}" var="b" itemLabel="#{b.description}" itemValue="#{b.id}" />
                    </h:selectOneMenu>
                    <h:outputLabel value="#{bundle.CreateEmployeesLabel_employeeManagersEmployeeNo}" for="employeeManagersEmployeeNo" />
                    <h:selectOneMenu id="employeeManagersEmployeeNo" value="#{employeesController.selected.employeeManagersEmployeeNo}">
                        <f:selectItems value="#{employeeManagersController.items}" var="c" itemLabel="#{c.name}" itemValue="#{c.employeeNo}" />
                    </h:selectOneMenu>
                </h:panelGrid>

                <ui:define name="li1">
                        <h:commandLink action="#{employeesController.create}" value="#{bundle.CreateEmployeesSaveLink}" styleClass="auto-style4" />
            </ui:define>
                <ui:define name="li2">
                        <h:commandLink action="#{employeesController.prepareList}" value="#{bundle.CreateEmployeesShowAllLink}" immediate="true" styleClass="auto-style4"/>
                </ui:define>

            </h:form>
        </ui:define>
    </ui:composition>

したがって、リンクはレンダリングされませんが、下部の ui:define タグを削除すると機能します。この方法が必要な理由は、コマンドリンクが右側の列に表示されるためです。コマンドリンクが右側の列で引き続き機能するように、ui:define を何に置き換えることができますか?

これが私のテンプレートの例です:

<h:body>
        <div id="header-wrapper">
            <div class="container">
                <div class="row">
                    <div class="12u">
                        <header id="header">
                            <h1><a href="#" id="logo" ><img src="../resources/images/btttr.png" alt="logoo" class="left" /></a></h1>
                            <nav id="nav">
                                <ui:insert name="heads"></ui:insert>
                            </nav>
                        </header>
                    </div>
                </div>
            </div>
        </div>
        <div id="main">
            <div class="container">
                <div class="row main-row">
                    <div class="8u">
                        <section class="left-content">
                            <div>
                                <ui:insert name="pagetitle">Default Title</ui:insert>
                                <br/>
                                <br/>
                            </div>
                            <ui:insert name="body">Default Body</ui:insert>
                        </section>
                    </div>
                    <div class="4u">
                        <section>
                            <ul class="small-image-list">
                                <li>
                                    <li> 
                                        <ui:insert name="li1"></ui:insert></li>
                                    <li>
                                        <ui:insert name="li2"></ui:insert></li>
                                    <li>
                                        <ui:insert name="li3"></ui:insert></li>
                                    <li>
                                        <ui:insert name="li4"></ui:insert></li>
                                    <li>
                                        <ui:insert name="li5"></ui:insert></li>
                                </li>
                            </ul>
                        </section>
                    </div>
                </div>
            </div>
        </div>
    </h:body>
4

1 に答える 1

0

<ui:define>同じテンプレートの を別の 内にネストすることはできません<ui:define>。これは意味がありません。テンプレートの構成が魔法のように変わることはありません。代わりに、本文とリンクが同じ形式になるように、テンプレート自体を変更する必要があります。

1 つの方法は<h:form>、テンプレート クライアントからに移動すること<div class="row main-row">です。もう 1 つの方法は、フォーム専用の別のテンプレートでテンプレートを拡張することです。

于 2013-08-26T13:11:50.127 に答える