2)、新建 inline.jsp,这个页面也会被main.jsp装饰,里面通过<page:applyDecorator>标签来引进别的页面,并且指定引入页面应用的装饰器。
<%@ taglib uri="http://www.opensymphony.com/sitemesh/page" prefix="page" %>
<%@ page contentType="text/html; charset=GBK"%>
<html>
<head>
<title>Inline decorator example</title>
</head>
<body>
<p>/This is a sample of an inline decorator.</p>
<table>
<tr>
<td>
<!—- 应用装饰器到指定的页面上,一般用于被装饰页面中主动应用包装器,这里,www.baidu.com的页面将被panel装饰器装饰-->
<page:applyDecorator name="panel" page="http://www.baidu.com" />
</td>
<td>
<page:applyDecorator name="panel" page="http://www.google.com" />
</td>
<td>
<page:applyDecorator name="panel">
<page:param name="title">Inline content</page:param>
Some inline stuff.
</page:applyDecorator>
</td>
</tr>
</table>
</body>
五、 结论
基于过滤器的SiteMesh是一个非常灵活和简单易用的修饰器框架。但它还是存在着一些问题。首先,从Servlet 2.3版本才开始支持过滤器,所以一些早期版本的应用服务器无法支持SiteMesh。在使用SiteMesh之前请先检查一下您想使用的应用服务器是否支持过滤器。
另外,过滤器只有在使用浏览器请求一个页面的时候才能生效。所以,如果你通过浏览器访问home.jsp,它将被修饰,但如果你使用Servlet的RequestDispatcher.include()或者forward()来控制home.jsp,修饰器就不起作用了。不过,从Servlet 2.4版本开始,你可以配置过滤器适用的环境,包括forward和include的情况下都可以使用了。