2008年4月16日 Edited By DingDangXiaoMa
(1)printable 装饰及 page 用法。
当要打印页面内容时,不想要一些边边框框。只关注想要的内容,设置为printable decorators 即可。
sitemesh 设置方法如下:
setemesh.xml
<mapper class="com.opensymphony.module.sitemesh.mapper.PrintableDecoratorMapper">
<param name="decorator" value="printable" />
<param name="parameter.name" value="printable" />
<param name="parameter.value" value="true" />
</mapper>
上面代码为设置 打印的属性及参数。?printable=true链接到打印模式上。
decorators.xml
<decorator name="printable" page="printable.jsp"/>
功能:将name="printable" 的装饰映射到printable.jsp上。
printable.jsp
<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator" %>
<html>
<head>
<title><decorator:title default="NO Title" /></title>
<decorator:head />
</head>
<body>
<h1><decorator:title default="No Title"/></h1>
<p align="right"><i>(printable version)</i></p>
<decorator:body />
</body>
</html>
这是参照官方上的例子的printable.jsp.注意。当链接指向时,没有标题时,显示No Title .当没有body部分时,则会出现null point error(我出现了这个错误,不知道是不是我机子的问题)
按照上述配置后:当访问:http://localhost/sitemesh/index.jsp?printable=true 时,就只能显示index.jsp未被修饰的数据。
再进行修改就是在页面上加一个超级链接到些页面打印状态。
在decorators/main.jsp中加入以下代码;
<decorator:usePage id="p" />
<%
HttpServletRequest req = p.getRequest();
StringBuffer printUrl = new StringBuffer();
printUrl.append( req.getRequestURI() );
printUrl.append("?printable=true");
if (request.getQueryString()!=null) {
printUrl.append('&');
printUrl.append(request.getQueryString());
}
%>
<p align="right">[ <a href="<%= printUrl %>">printable version</a> ]</p>
这样就在每个页面都添加上了,打印式的超级链接。 <decorator:usePage id="p" /> 是获得了页面的page对象。
(2)page:applyDecorator 用法:把某一个页面进行某种样式的映射。<page:applyDecorator page="*.jsp" name="*" />
把*.jsp映射到decorators.xml 中定义的* 装饰上。
例子:
<page:applyDecorator name="panel" page="/date.jsp" >