3

我想要多个装饰器,如此处所述:https ://github.com/sitemesh/sitemesh2 。我在 decorators.xml 中提供了多个装饰器,但主装饰器被应用于我项目中的每个文件。例如,我的装饰器看起来像这样:

<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”模板进行渲染。

我究竟做错了什么?

4

2 回答 2

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 使用了第一个匹配的装饰器模式,并且按照您指定的顺序,它始终是“主”装饰器。

于 2012-04-09T18:29:55.480 回答
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> 

并告诉我它是否有效。

于 2012-04-07T23:59:37.847 回答