代码之家  ›  专栏  ›  技术社区  ›  David

如何在插入的页面中包含平铺定义属性

  •  3
  • David  · 技术社区  · 14 年前

    我有一块瓷砖-定义.xml有这些定义。。。

    <definition name="masterLayout" path="/WEB-INF/tiles-layouts/globalLayout.jsp">
        <put name="pageTemplate" value="over-ride for each page" />
    </definition>
    
    <definition name="childLayout" extends="masterLayout">
        <put name="pageTemplate" value="/WEB-INF/tiles-layouts/child/layout.jsp" />
        <put name="title" value="page title" />
        <put name="metaKeywords"    value="" />
        <put name="metaDescription" value="" />
        <put name="body"            value="/child/pagebody.jsp"/>
        <putList name="list">
            <add value="title" />
            <add value="metaKeywords" />
            <add value="metaDescription" />
            <add value="body" />
        </putList>
    </definition>
    

    <tiles:insert attribute="pageTemplate">
    <tiles:put name="title"><tiles:getAsString name="title" /></tiles:put>
    <tiles:put name="metaKeywords"><tiles:getAsString name="metaKeywords" /></tiles:put>
    <tiles:put name="metaDescription"><tiles:getAsString name="metaDescription" /></tiles:put>
    <tiles:put name="body"><tiles:getAsString name="body" /></tiles:put>
    

    因为子定义并不总是包含相同的属性。有没有一种方法可以使用子定义中的putList将属性放入globalLayout.jsp?我试过以下方法,但失败了

    <%@ page import="java.util.Iterator" %>
    <tiles:importAttribute />
    <bean:define id="list" name="list" type="java.util.List" scope="page" />
    <tiles:insert attribute="pageTemplate" ignore="true" flush="true">
        <%
        for ( Iterator it = list.iterator(); it.hasNext(); ) {
            String item = (String) it.next();
        %>
            <tiles:put name="<%=item%>"><tiles:getAsString name="<%=item%>" ignore="true" /></tiles:put>
        <% } %>
    </tiles:insert>
    
    2 回复  |  直到 14 年前
        1
  •  13
  •   theon    12 年前

    cascade="true" put-attributes

    看到了吗 here

        2
  •  5
  •   David    14 年前

    我没有尝试将属性向下推到子布局,而是将子布局向上拉到父布局的范围中。

    <tiles:importAttribute name="pageTemplate" />
    <bean:define id="pageTemplate" name="pageTemplate" />
    <jsp:include flush="true" page="<%=pageTemplate%>"></jsp:include>