2 Stimmen

Verschachtelung von Vorlagen in Kacheln, warum sind Attribute in der eingeschlossenen Vorlage undefiniert?

Ich verwende Tiles 2 in meiner Webanwendung, und die Grundeinstellung, die ich in meiner tiles.xml-Datei habe, ist folgende:

<tiles-definitions>
    <definition name="mainLayout" template="/jsp/layout.jsp">
        <put-attribute name="header" value=""/>
        <put-attribute name="menu" value="/jsp/defaultMenu.jsp" />
        <put-attribute name="content" value="" />
        <put-attribute name="footer" value="/jsp/footer.jsp" />
    </definition>

    <definition name="HomePage" extends="mainLayout">
        <put-attribute name="content" type="template" value="/jsp/home.jsp"/>
        <put-attribute name="homeClass" value="active" />
    </definition>

    ... rest omitted for brevity.

In der Datei layout.jsp, die das Layout definiert, füge ich das Menü an der entsprechenden Stelle ein.

<tiles:insertAttribute name="menu" />

Ich wollte also in meiner Menüvorlage das in tiles.xml definierte Attribut homeClass verwenden.

<tiles:insertAttribute name='homeClass'/>

aber ich erhalte eine Fehlermeldung, dass das Attribut homeClass nicht definiert ist. Wenn ich ein insertAttribute in meinem layout.jsp mache, wird der Wert richtig definiert, aber ich brauche es in der Menü-JSP definiert, von meinem Layout enthalten.

Meine Frage ist also: Wie kann ich die homeClass Attribut nicht nur an meine Layoutvorlage, sondern auch an die Menüvorlage, die in der Layoutvorlage enthalten ist, korrekt übergeben?

3voto

nont Punkte 9034

Ich glaube, Sie können verschachtelte Vorlagendefinitionen verwenden:

<definition name="mainLayout" template="/jsp/layout.jsp">
        <put-attribute name="header" value=""/>

        <put-attribute name="menu">
            <definition template="/jsp/defaultMenu.jsp">
                <put-attribute name="homeClass" value="active"/>
            </definition>
         </put-attribute>

        <put-attribute name="content" value="" />
        <put-attribute name="footer" value="/jsp/footer.jsp" />
    </definition>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X