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
对我来说仍然是抽象的。任何帮助,将不胜感激。