0
我有一個「t.base」視圖定義的所有網頁內的模板:阿帕奇磚另一個模板
<definition name="t.base" template="/WEB-INF/tiles/base.jsp">
<put-attribute name="title" value="SomeTitle"/>
</definition>
它的主要屬性是body
其在每個子模板來定義。現在我想對將被直接放入體內的主頁滑塊(是一樣寬屏幕):
<definition name="t.homepage" extends="t.base">
<put-attribute name="body" value="/WEB-INF/jsp/homepage.jsp"/>
<put-attribute name="title" expression="lyricsBase : home of lyrics"/>
</definition>
所有頁面的其餘部分將有一個HTML容器內被投入(添加一些CSS樣式)不要使它像屏幕一樣寬(邊距等)。我想這個容器模板「越權」的body
瓷磚attibute:容器HTML標籤內
<div class="container marketing">
<div class="container">
<tiles:insertAttribute name="body" />
</div>
</div>
舉例子視圖:
<definition name="t.jukebox" extends="t.base">
<put-attribute name="body">
<definition template="/WEB-INF/tiles/container.jsp">
<put-attribute name="body" value="/WEB-INF/jsp/jukebox.jsp" />
</definition>
</put-attribute>
<put-attribute name="title" expression="${jukebox.name} - lyricsBase"/>
</definition>
無論如何,這看起來並不好,我希望有一個更好的解決方案,將減少配置大小,並將產生完全相同的效果。我試圖做一個這個容器的定義:
<definition name="t.container" extends="t.base">
<put-attribute name="body" value="/WEB-INF/tiles/container.jsp"/>
</definition>
這將被子模板使用。但我不知道如何配置它。
換句話說,我想實現類似於Russian Matrioszka dolls的事情,並在所有級別上使用相同的屬性名稱。只是覆蓋屬性。我習慣了decorator
模式,這個composite view
對我來說仍然是抽象的。任何幫助,將不勝感激。