在sitemesh.xml中做常用的三个映射器,总结如下:

映射器元素的顺序确定优先级。良好的应用程序应使用以下顺序,

  1. Parameter query = ParameterDecoratorMapper(URL参数)
  2. Page specific using meta tag = PageDecoratorMapper(页面meta标签)
  3. Pattern = ConfigDecoratorMapper(URL匹配)

请记住,映射器元素的性质可以覆盖开发人员设置的顺序。

例如,常见的错误是将ConfigDecoratorMapper放在PageDecoratorMapper之前。因为ConfigDecoratorMapper是如此通用,技术上所有页面请求将导致装载器被加载,因此PageDecoratorMapper从不被加载。即使在decorators.xml中有一个排除的情况,匹配也就是不应用装饰器,并且再次PageDecoratorMapper不会被加载。

下面将介绍其它映射器的用法,引用自http://wiki.sitemesh.org/wiki/display/sitemesh/DecoratorMappers

DecoratorMapper

描述

AgentDecoratorMapper

可以确定请求页面的用户代理(即Web浏览器),并映射到合适的Decorator。

ConfigDecoratorMapper

DecoratorMapper的默认实现。从配置属性中读取装饰器和映射(默认'/WEB-INF/decorators.xml')。

CookieDecoratorMapper

将根据cookie值映射合适的装饰器。

EnvEntryDecoratorMapper

允许引用装饰器名称的Web应用程序环境条目,如果没有找到匹配的环境条目,则返回到ConfigDecoratorMapper的行为。

FileDecoratorMapper

将会将装饰器的名称视为使用的文件名(在Web应用程序的上下文中)。

FrameSetDecoratorMapper

当页面是HTMLPage的一个实例并且isFrameSet()返回true时,将使用指定的装饰器。该装饰器的名称应该在decorator属性中提供-如果没有提供decorator属性,则不会将装饰器应用于基于帧的页面。

InlineDecoratorMapper

用于在使用内联装饰器时确定正确的装饰器。

LanguageDecoratorMapper

可以确定浏览器中设置的首选语言请求页面,并映射到合适的Decorator(使用“Accept-Language”HTTP头)。

PageDecoratorMapper

实际页面决定要使用的装饰器。

页面的“meta.decorator”和“decorator”属性被访问,如果它们中的任何一个包含有效的Decorator的名称,那么该Decorator将被应用。

ParameterDecoratorMapper

将根据请求参数选择装饰器。

ParameterDecoratorMapper通过三个属性配置。

decorator.parameter-包含将要映射的装饰器名称的参数。默认为“装饰器”。

例如,如果decorator.parameter是“foobar”,那么myurl.jsp?foobar=mydecorator将映射到名为“mydecorator”的装饰器。

您还可以提供可选的“确认参数”。如果名为parameter.name的参数在请求URI中,并且该参数的值等于parameter.value属性,则只会映射装饰器。

例如,假设parameter.name=confirm和parameter.value=true,URI myurl.jsp?decorator=mydecorator&confirm=true将映射装饰器mydecorator。哪里的URI是myurl.jsp?decorator=mydecorator和myurl.jsp?decorator=mydecorator&confirm=false不会返回任何装饰器。

SessionDecoratorMapper

将查看一个会话属性来查找要使用的适当装饰器的名称。如果会话属性存在,则映射器将不会执行任何操作,并允许链中的下一个映射器选择装饰器。

默认情况下,它将查看“decorator”会话属性,但是可以通过使用“decorator.parameter”属性配置映射器来覆盖它。

PrintableDecoratorMapper

将检查“printable = true”是否作为请求参数提供,如果是,请使用指定的decorator。该装饰器的名称应在decorator属性中提供。

RobotDecoratorMapper

当请求者被识别为搜索引擎的机器人(也称为spider,crawler,ferret)时,将使用指定的装饰器。该装饰器的名称应在decorator属性中提供。

详细说明:https://web.archive.org/web/20071009180816fw_/http://www.opensymphony.com/sitemesh/api/com/opensymphony/module/sitemesh/mapper/package-frame.html

使用教程参考:

http://blog.csdn.net/nengyu/article/details/6736943

http://blog.csdn.net/caomiao2006/article/details/46463077

http://www.educity.cn/wenda/133329.html

SiteMesh2-sitemesh.xml的其它映射器的用法的更多相关文章

  1. SiteMesh2-sitemesh.xml的ParameterDecoratorMapper映射器的用法

    继续使用上一章http://www.cnblogs.com/EasonJim/p/7086916.html的例子,改造成使用ParameterDecoratorMapper映射器的方法,这个映射器不需 ...

  2. SiteMesh2-sitemesh.xml的PageDecoratorMapper映射器的用法

    继上一章http://www.cnblogs.com/EasonJim/p/7083165.html中使用的例子中,是通过decorators.xml文件通过URL匹配进行转换的. 而下面这种方法是通 ...

  3. SiteMesh2-sitemesh.xml的ConfigDecoratorMapper映射器的用法

    继上一次的示例工程http://www.cnblogs.com/EasonJim/p/7083165.html,使用的就是ConfigDecoratorMapper映射器,通过指定目录下的页面,都同一 ...

  4. Java Persistence with MyBatis 3(中文版) 第三章 使用XML配置SQL映射器

    关系型数据库和SQL是经受时间考验和验证的数据存储机制.和其他的ORM 框架如Hibernate不同,MyBatis鼓励开发者可以直接使用数据库,而不是将其对开发者隐藏,因为这样可以充分发挥数据库服务 ...

  5. Mybatis基于XML配置SQL映射器(二)

    Mybatis之XML注解 之前已经讲到通过 mybatis-generator 生成mapper映射接口和相关的映射配置文件: 下面我们将详细的讲解具体内容 首先我们新建映射接口文档  sysUse ...

  6. 深入理解MyBatis的原理(四):映射器的用法

    前言:继续深入学习 mybatis 的用法及原理,还是先会用再学习原理. 映射器的主要元素有:select.insert.update.delete.parameterMap(即将被删除,不建议使用) ...

  7. MyBatis学习笔记3--使用XML配置SQL映射器

    <resultMap type="Student" id="StudentResult"> <id property="id&quo ...

  8. (三)使用XML配置SQL映射器

    SqlSessionFactoryUtil.java package com.javaxk.util; import java.io.IOException; import java.io.Input ...

  9. mybatis 基于xml 配置的映射器

    cache  给命名空间的缓存配置 cache-ref 其他命名空间缓存配置的引用 resultMap 描述如何从数据库结果集中来加载对象 <!--column不做限制,可以为任意表的字段,而p ...

随机推荐

  1. GIT学习之路第三天 文件操作

    本文参考廖雪峰老师的博客进行总结,完整学习请转廖雪峰博客 一.版本回退 1.git log提交日志 在git中可以通过个git log 命令显示从最近到最远的提交日志. $ git log commi ...

  2. 记录从数据库把数据初始化mongodb缓存的一些坑

    在项目启动时,需要做一些项目启动后的预操作,比如初始化数据进缓存等等. 这时就需要写listener,等监听.在项目启动时把数据缓存进mongodb. 但是这会有一个问题.项目一般都是把各种bean交 ...

  3. js复制功能

    // 复制功能 copyUrl() { var Url = document.getElementById('biao') Url.select() // 选择对象 document.execComm ...

  4. Storm概念学习系列之storm的定时任务

    不多说,直接上干货! 至于为什么,有storm的定时任务.这个很简单.但是,这个在工作中非常重要! 假设有如下的业务场景 这个spoult源源不断地发送数据,boilt呢会进行处理.然后呢,处理后的结 ...

  5. 2017-12-01HTML块及引用

    HTML块1.HTML块元素 快元素在显示时,通常会以新行开始 例如:<h1>.<p>.<ul>2.HTML内联元素 内联元素通常不会以新行开始 例如:<b& ...

  6. 高效程序员的45个习惯·敏捷开发修炼之道(Practices of an Agile Developer)读书笔记

    首先,这本书值得再看一遍——这次的阅读,有很多东西都是知其“形”,不知其“神”的,这导致了我对其中某些建议持怀疑态度,接受了的建议也有待商榷. 总之,先记录本书的一些信息: Practices of ...

  7. Android 新闻app的顶部导航栏,怎么实现动态加载?

    TabLayout + viewpager 其中viewpager的适配器要继承FragmentPagerAdapter,要实现动态更新,最主要的是适配器的写法,要在数据发生变化之后清除Fragmen ...

  8. python数于字符串

    python数于字符串 1.了解数的类型 2.什么事字符串 3.引号的使用与区别 4.转义符 5.自然字符串 6.字符串的重复 7.子字符串 #了解数的类型 1.python中数的类型主要有五种,分为 ...

  9. Learning Face Age Progression: A Pyramid Architecture of GANs

    前言 作为IP模式识别的CNN初始模型是作为单纯判别式-模式识别存在的,并以此为基本模型扩展到各个方向.基本功能为图像判别模型,此后基于Loc+CNN的检测模型-分离式.end2end.以及MaskC ...

  10. (转)Hibernate框架基础——一对多关联关系映射

    http://blog.csdn.net/yerenyuan_pku/article/details/52746413 上一篇文章Hibernate框架基础——映射集合属性详细讲解的是值类型的集合(即 ...