2012-04-07 59 views
3

我想要多個裝飾,這裏記錄:https://github.com/sitemesh/sitemesh2。我在decorators.xml中提供了多個裝飾器,但主裝飾器被應用於我的項目中的每個文件。 例如我的裝修看起來是這樣的:sitemesh與多個裝飾文件

<decorators defaultdir="/WEB-INF/decorators"> 
    <decorator name="main" page="main.jspx"> 
     <pattern>/*</pattern> 
    </decorator> 
    <decorator name="other" page="other.jspx"> 
     <pattern>/spring/other/*</pattern> 
    </decorator> 
</decorators> 

而且兩者/spring/some/page.jspx/spring/other/page.jspx既渲染了`main.jspx」模板。

我在做什麼錯?

回答

0

使用以下命令:

<decorators defaultdir="/WEB-INF/decorators"> 
    <decorator name="main" page="main.jspx"> 
     <pattern>/spring/main/*</pattern> 
    </decorator> 
    <decorator name="other" page="other.jspx"> 
     <pattern>/spring/other/*</pattern> 
    </decorator> 
</decorators> 

,並告訴我,如果它的工作。

+1

沒有工作。實際上我已經嘗試了一堆東西,唯一可行的(對於任何模板)是'/ *'或'/ context *'。所以例如'/ context/x/*'之類的任何模式都不適用。 – Kevin 2012-04-08 00:20:24

4

我知道文檔例子反駁這種想法,但如果你需要一些東西來試試 - 嘗試重新訂購您的裝飾,像這樣:

<decorators defaultdir="/WEB-INF/decorators"> 
    <decorator name="other" page="other.jspx"> 
     <pattern>/spring/other/*</pattern> 
    </decorator> 
    <decorator name="main" page="main.jspx"> 
     <pattern>/*</pattern> 
    </decorator> 
</decorators> 

從內存我想SiteMesh的使用第一匹配裝飾模式,並且您指定的順序始終是「主」裝飾器。