具有多个装饰器文件的sitemesh

时间:2012-04-07 23:53:12

标签: java spring-mvc sitemesh

我想要多个装饰器,如下所示: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'模板进行渲染。

我做错了什么?

2 个答案:

答案 0 :(得分: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使用第一个匹配的装饰器模式,并且您指定的顺序始终是“主要”装饰器。

答案 1 :(得分: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> 

并告诉我它是否有效。