我想要多个装饰器,如下所示: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'模板进行渲染。
我做错了什么?
答案 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>
并告诉我它是否有效。