如何在图块中扩展模板?

时间:2011-03-16 10:37:41

标签: apache jsp tomcat tiles

我有一个主模板,它具有一般的网站布局框架:“/ WWE-INF / jsp / common.jsp” 然后我有另一个模板,通常用于具有类似布局的另一个页面:“/ WWE-INF / jsp / feature / common.jsp”

功能模板基本上定义了“主”模板的属性“内容”的内容。

我试图通过以下方式解决这个问题:

<definition name="product.common" template="/WEB-INF/jsp/common.jsp">
    <put-attribute name="content" value="/WEB-INF/jsp/features/common.jsp" />
</definition>
<definition name="features/index" extends="product.common">
    <put-attribute name="title" value="Features" />
    <put-attribute name="rightContent" value="/WEB-INF/jsp/features/index.jsp" />
</definition>

但这不起作用。我在堆栈跟踪中收到以下错误消息:

  

org.apache.tiles.template.NoSuchAttributeException:找不到属性'rightContent'。

但是功能模板确实有以下内容:

<tiles:insertAttribute name="rightContent" />

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我猜你需要的是nesting definitions。你可以尝试这样的事情。

<definition name="features.common" template="/WEB-INF/jsp/features/common.jsp">
</definition>

<definition name="product.common" template="/WEB-INF/jsp/common.jsp">
    <put-attribute name="content" value="features.common" />
</definition>

<definition name="features/index" extends="product.common">
    <put-attribute name="title" value="Features" />
    <put-attribute name="rightContent" value="/WEB-INF/jsp/features/index.jsp" />
</definition>