apache tiles 3.0属性在嵌套定义中未被覆盖

时间:2015-01-28 03:54:24

标签: spring-mvc tiles

我有以下磁贴定义                               

<definition name="homePage" extends="basetemplate">
 <put-attribute name="centeredContentSection" value="hometemplate"/>

<definition name="insidetemplate" templateExpression="/WEB-INF/jsp/templates/centercontentemplate.jsp">
    <put-attribute name="maincomponent" expression="/WEB-INF/jsp/tiles/resource.jsp"/>
    <put-attribute name="rightcomponent"  expression="/WEB-INF/jsp/tiles/right.jsp"/>
</definition>

<definition name="welcome" extends="basetemplate" >
    <put-attribute name="centeredContentSection" value="insidetemplate"/>
</definition>

<definition name="resourceListing" extends="welcome">
<put-attribute name="maincomponent" expression="/WEB-INF/jsp/tiles/resourcelist.jsp"/>
</definition>

resourceListing 定义中,我指定了一个 maincomponent 属性,我认为应该覆盖定义 insidetemplate 定义的属性,该定义是嵌套的内部欢迎定义。但是,我为 maincomponent /WEB-INF/jsp/tiles/resource.jsp )指定的值似乎没有被我在中指定的值覆盖resourceListing 定义。反正有没有让这个开心呢?

1 个答案:

答案 0 :(得分:0)

你所描述的并不像正确的行为。

Defintion.inherit(definition)不应该覆盖属性,请参阅BasicAttributeContext.addMissing(..)

参考https://github.com/apache/tiles/blob/TILES_3_0_X/tiles-api/src/main/java/org/apache/tiles/BasicAttributeContext.java#L254