继续使用上一章http://www.cnblogs.com/EasonJim/p/7086916.html的例子,改造成使用ParameterDecoratorMapper映射器的方法,这个映射器不需要通过匹配URL和在页面上写模板路径去实现,只需要通过URL上传入指定参数即可。

修改配置如下:

1、sitemesh.xml引入ParameterDecoratorMapper映射器

<sitemesh>
<property name="decorators-file" value="/WEB-INF/decorators.xml"/>
<excludes file="${decorators-file}"/> <page-parsers>
<parser content-type="text/html" class="com.opensymphony.module.sitemesh.parser.HTMLPageParser" />
</page-parsers>
<decorator-mappers>
<mapper class="com.opensymphony.module.sitemesh.mapper.PageDecoratorMapper">
<param name="property.1" value="meta.decorator" />
<param name="property.2" value="decorator" />
<!-- 注意这一行指定<meta/>标签的 name 属性作为PageDecorator的识别符号 -->
<param name="property.3" value="meta.theme" />
</mapper>
<mapper class="com.opensymphony.module.sitemesh.mapper.ParameterDecoratorMapper"/>
<mapper class="com.opensymphony.module.sitemesh.mapper.FrameSetDecoratorMapper"/>
<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>
<mapper class="com.opensymphony.module.sitemesh.mapper.FileDecoratorMapper"/>
<mapper class="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper">
<param name="config" value="${decorators-file}" />
</mapper>
</decorator-mappers>
</sitemesh>

2、新建test2.jsp页面,这个页面无需写任何模板

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title></title>
</head>
<body>
<h1>Test2</h1>
</body>
</html>

3、访问URL变成http://localhost:8080/test1/test2.jsp?decorator=basic-theme

而如果URL没有参数,那么会变成原始页面

4、为URL后面的参数指定自定义的参数名,修改sitemesh.xml中映射器的写法

        <mapper class="com.opensymphony.module.sitemesh.mapper.ParameterDecoratorMapper">
<param name="decorator.parameter" value="theme"/>
</mapper>

访问URL变成:http://localhost:8080/test1/test2.jsp?theme=basic-theme

        <mapper class="com.opensymphony.module.sitemesh.mapper.ParameterDecoratorMapper">
<param name="decorator.parameter" value="theme"/>
<param name="parameter.name" value="confirm"/>
<param name="parameter.value" value="true"/>

</mapper>

增加了两个参数,那么访问将变成访问URI时:test2.jsp?theme=basic-theme&confirm=true将映射装饰器basic-theme。那里的URI是test2.jsp?theme=basic-theme和test2.jsp?theme=basic-theme&confirm=false不会返回任何装饰器。

也就是说在访问时增加确认参数。

测试工程:https://github.com/easonjim/5_java_example/tree/master/sitemesh/test3

参考:

https://web.archive.org/web/20071008181341fw_/http://www.opensymphony.com/sitemesh/api/com/opensymphony/module/sitemesh/mapper/ParameterDecoratorMapper.html

最新文章

  1. android中工作线程安全
  2. Netty In Action
  3. lkx开发日志2-第一次团队讨论
  4. SqlServer2008 无法修改表,超时时间已到 在操作完成之前超时解决方法
  5. xml 中转意字符&amp;\/使用方法
  6. 28、Oracle(四)用户权限控制
  7. MATERIALIZED VIEW
  8. 【转】跟着开涛学SpringMVC
  9. WCF Concurrency (Single, Multiple, and Reentrant) and Throttling
  10. Ini文件操作类
  11. mysql死锁问题分析(转)
  12. java major version(转)
  13. Django框架全面讲解
  14. 尝试向树莓派3B引入Drbian 9 arm64-PART 1
  15. html checkbox样式美化
  16. CentOS 7安全加固
  17. 数据库操作中如何批量执行多个sql文件?
  18. .NET MVC 后台接受base64的上传图片
  19. Dubbo浅谈
  20. Masonry 动画

热门文章

  1. ACM_递推题目系列之一涂色问题(递推dp)
  2. jQuery伪分页效果
  3. 理解 CSS 布局和块级格式上下文
  4. blender_(uv应用)................http://digitalman.blog.163.com/blog/static/23874605620174172058299/
  5. CAD指定区域绘制一个jpg文件
  6. 【原】thinkphp实现存储session至redis
  7. Getting start with dbus in systemd (03) - sd-bus.h 使用例子 (systemd version&gt;=221)
  8. 小程序 textarea ios兼容解决
  9. linux下C/C++程序的内存布局
  10. C语言中指针的加减运算