SiteMesh3 支持两种主要的配置: XML 和 Java,甚至两者可以共用。
| XML | Java |
|---|---|
|
|
基于xml的配置
配置文件需放置于/WEB-INF/sitemesh3.xml ,如
<sitemesh> <mapping path="/*" decorator="/decorator.html"/> <mapping path="/admin/*" decorator="/admin-decorator.html"/> </sitemesh>
基于java的配置
必须编写一个过滤器,继承org.sitemesh.config.ConfigurableSiteMeshFilter 且重载applyCustomConfiguration方法,如
public class MySiteMeshFilter extends ConfigurableSiteMeshFilter {
@Override
protected void applyCustomConfiguration(SiteMeshFilterBuilder builder) {
builder.addDecoratorPath("/*", "/decorator.html")
.addDecoratorPath("/admin/*", "/admin/decorator.html");
}
}
如果xml和java两个配置方法共用,sitemesh3在调用applyCustomConfiguration()方法前会先加载xml的配置。
配置渲染
- 给所有路径配置一个默认的渲染
- 给特殊的路径配置一个渲染
- 给某个路径配置多个渲染,一个渲染依赖于前面的渲染
- 排除某个路径
xml
<sitemesh>
<!-- 配置默认的渲染器. 将应用于所有路径. -->
<mapping decorator="/default-decorator.html"/>
<!-- 配置特定路径的渲染器. -->
<mapping path="/admin/*" decorator="/another-decorator.html"/>
<mapping path="/*.special.jsp" decorator="/special-decorator.html"/>
<!-- 配置多个渲染器. -->
<mapping>
<path>/articles/*</path>
<decorator>/decorators/article.html</decorator>
<decorator>/decorators/two-page-layout.html</decorator>
<decorator>/decorators/common.html</decorator>
</mapping>
<!-- 不被渲染的路径. -->
<mapping path="/javadoc/*" exclue="true"/>
<mapping path="/brochures/*" exclue="true"/>
</sitemesh>
java
public class MySiteMeshFilter extends ConfigurableSiteMeshFilter {
@Override
protected void applyCustomConfiguration(SiteMeshFilterBuilder builder) {
// 配置默认的渲染器. 将应用于所有路径.
builder.addDecoratorPath("/*", "/default-decorator.html")
// 配置特定路径的渲染器.
.addDecoratorPath("/admin/*", "/another-decorator.html")
.addDecoratorPath("/*.special.jsp", "/special-decorator.html")
// 配置多个渲染器.
.addDecoratorPaths("/articles/*", "/decorators/article.html",
"/decoratos/two-page-layout.html",
"/decorators/common.html")
// 不被渲染的路径.
.addExcludedPath("/javadoc/*")
.addExcludedPath("/brochures/*");
}
}
对于大多数情况,上面的配置就足够使用了。还有更高级的应用,如配置MIME类型,在页面里嵌入tag标签等。
本文深入探讨了SiteMesh3的配置方式,包括XML和Java两种主要方法,并展示了如何使用这两种方式来定制网站布局和渲染策略。通过示例代码,详细介绍了如何在不同路径下应用不同的装饰器和渲染器,以及如何排除某些路径不进行渲染。
843

被折叠的 条评论
为什么被折叠?



