2011-03-16 69 views
1

我有一個主模板,它具有一般的站點佈局框架:「/WEB-INF/jsp/common.jsp」 然後,我有另一個模板,通常用於另一個具有相似佈局的頁面:「/ WEB -INF/jsp/features/common.jsp「如何在瓷磚中擴展模板?

功能模板基本上定義了」主「模板的屬性」content「的內容。

我試圖解決這個問題的方式如下:

<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

我猜你需要的是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> 
+0

這與我的有何不同? – 2011-03-16 12:03:52

+0

@Piotr。如果你仔細看看,在我的例子中,內容包含* subdefinition *值 – Raghuram 2011-03-16 12:14:39

+0

好吧,我試過並得到了「org.apache.tiles.template.NoSuchAttributeException:屬性'rightContent'找不到。 」。問題在於「rightContent」位於特性通用模板中。任何其他想法? – 2011-03-16 13:06:51