具有多个装饰器文件的站点网格
Posted
技术标签:
【中文标题】具有多个装饰器文件的站点网格【英文标题】:sitemesh with multiple decorator files 【发布时间】:2012-04-21 00:09:30 【问题描述】:我想要多个装饰器,如下所述: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' 模板进行渲染。
我做错了什么?
【问题讨论】:
【参考方案1】:我知道文档示例与这个想法相矛盾,但如果您需要尝试一些东西 - 尝试像这样重新排序您的装饰器:
<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 使用了 first 匹配的装饰器模式,并且按照您指定的顺序始终是“主”装饰器。
【讨论】:
【参考方案2】:使用以下内容:
<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>
告诉我它是否有效。
【讨论】:
那行不通。实际上我已经尝试了很多东西,唯一有效的(对于任何模板)是/*
或/context*
。因此,例如/context/x/*
之类的任何模式都不会被应用。以上是关于具有多个装饰器文件的站点网格的主要内容,如果未能解决你的问题,请参考以下文章