سؤال

<tiles-definitions>
    <definition name="home" template="/WEB-INF/views/home.jsp">
        <put-attribute name="title"       value="My App" />
        <put-attribute name="header"      value="/WEB-INF/views/common/header.jsp" />
        <put-attribute name="menu"        value="/WEB-INF/views/common/nav.jsp" />
        <put-attribute name="footer"      value="/WEB-INF/views/common/footer.jsp" />
    </definition>
</tiles-definitions>

How do I propagate the title value (My App) to header.jsp? In header jsp, when I do:

<tiles:insertAttribute name="title" ignore="true" />

nothing is printed. When I do the same in home.jsp, My App is printed. cascaded=true has not helped.

هل كانت مفيدة؟

المحلول

It's not clear where you tried putting that cascade=true (assuming it's a typo in your question: it should be "cascade", not "cascaded") but the following works as expected:

tiles.xml:

<tiles-definitions>
    <definition name="home" template="/WEB-INF/views/home.jsp">
        <put-attribute name="title"   value="My App" cascade="true"/>
        <put-attribute name="header"  value="/WEB-INF/views/common/header.jsp" />
        (...)
    </definition>
</tiles-definitions>

home.jsp:

    Title: <tiles:insertAttribute name="title" /> <br/>
    Header: <tiles:insertAttribute name="header" />

header.jsp:

Title in header: <tiles:insertAttribute name="title" />

The output is:

Title: My App
Header: Title in header: My App
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top