1

问题是如何覆盖图块子模板中的属性。

我有两个模板:base 和 child。这是基本布局的一部分 - HTML 头:

<title>
    <tiles:insertAttribute name="title" />
    lyricsBase: <c:out value="${jukebox.name}" />
</title>

这是我的tiles.xml:

<definition name="t.base" template="/WEB-INF/tiles/base.jsp">
    <put-attribute name="title" value="SomeTitle"/>
</definition>
[...]
<definition name="t.song" extends="t.base">
    <put-attribute name="body" value="/WEB-INF/jsp/song.jsp"/>
    <put-attribute name="title" value="song.title"/>
</definition>

当我运行我的页面时,我得到以下 HTML 标题:song.title lyricsBase: xxx. 我应该在子视图中放入什么代码来覆盖该title属性?例如,我正在尝试将其设为 ${song.title}

<tiles:putAttribute name="title" value="${song.title}" />

...但它不起作用。谢谢你的帮助!

4

1 回答 1

2

您不应该使用 value 属性,而是使用 expression 属性。在tiles3中,我遇到了put属性的字符串值问题,而没有级联是真的......这假设tiles3(尽管大多数适用于大多数tiles 2)。

以下未经测试:

<definition name="t.base" template="/WEB-INF/tiles/base.jsp">
    <put-attribute name="title" cascade="true" value="SomeTitle"/>
</definition>
[...]
<definition name="t.song" extends="t.base">
    <put-attribute name="body" value="/WEB-INF/jsp/song.jsp"/>
    <put-attribute name="title"  cascade="true" expression="EL:song.title"/>
</definition>

然后<tiles:insertAttribute name="title" />应该在您的模板中按预期工作。

于 2013-02-14T21:58:39.773 回答