Visitor访问者模式定义
作用于某个对象群中各个对象的操作. 它可以使你在不改变这些对象本身的情况下,定义作用于这些对象的新操作.
对于Struts 2中,Visitor Design Pattern在页面校验中被很多开发者广泛应用。记得以前在Struts 1中,支持在ActionForm的validate方法中手动校验(通过JavaScript),或者通过Commons Validator的扩展来校验(配置文件properties).而Struts 2中支持通过validate方法和XWork校验框架来进行校验。XWork校验框架使用为属性类类型定义的校验和内容校验,来支持chain校验子属性。在这过程中使用到Visitor模式。
在Struts 2中校验分为客户端校验和服务器端校验。在客户端,我们通常通过框架或者一些已经成熟的Javascript脚本做校验。在服务器端,通常校验有三种途径:
1. 在Action中可以重写ActionSupport的Validate方法。
2. 如果在Action中存在多个类似于execute的处理逻辑的话,我们可以重写validateXxx()方法(Xxx为不同的处理逻辑名称,例如有validateRegist()方法,就是处理Regist业务逻辑)
3. 编写对应于Action的validate 的xml文件。这个应该是最为常用的一种解决方案了,但是有一个问题,Action众多,或者在Action中有多个对应一个或多个POJO的处理逻辑,那么这些xml文件就会随着Action文件和处理逻辑的增加而相应的增加,这显然不是个好的现象。 所以如果只是针对POJO来写相应的validate xml文件,无疑会好很多。 这就是Visitor校验器的功用了。
针对第三点,我举一个例子:
<validators>
<field name="user">
<field-validator type="visitor">
<param name="context">user</param>
<param name="appendPrefix">true</param>
<message>user </message>
</field-validator>
</field>
</validators>
<validators>
<field name="firstname">
<field-validator type="requiredstring">
<message>required first name</message>
</field-validator>
</field>
<field name="lastname">
<field-validator type="requiredstring">
<message>required last name</message>
</field-validator>
</field>
<field name="age">
<field-validator type="required">
<message>required age</message>
</field-validator>
<field-validator type="int">
<param name="min">1</param>
<param name="max">100</param>
<message>age should be between ${min} and ${max}</message>
</field-validator>
</field>
</validators>
分享到:
相关推荐
struts2.1.6 convertion插件(即注释方式配置)的helloworld 默认调用index()方法 文档说明用...struts2.1.6 vistor校验例子 都是我测试例子,写到一块了 有点乱 哪为高手给我说下 rest-plugin有什么好处 项目中有说明文件
近期学习tsm备份,用vistor虚拟带库搭建实验环境。文档涵盖了整个环境的搭建过程,每一步很详细。其中vistor_2_1_1.tgz 就一个安装包,还有安装说明。
vistor_2_1_1.tgz 就一个安装包,我还描述个啥东西,字数
C++设计模式代码资源24_Vistor_访问器.zip
vistor虚拟带库安装程序linux下
C#设计模式之1 --- Visitor (附原码)
vistor虚拟带库linux所需的rpm包,我打包了
NULL 博文链接:https://wy649898543.iteye.com/blog/1436414
C++设计模式课件24_Vistor_访问器.pdf
近期学习tsm备份,用vistor虚拟带库搭建实验环境。文档涵盖了整个环境的搭建过程,每一步很详细。
Visitor模式.docVisitor模式.doc
我们在使用visual studio进行编译C++代码时,你只是在菜单中选择了Build,然后visual studio就开始了一堆的编译工作;你应该知道,因为你的一个简单的Build动作,编译器在后台会进行语法分析,生成中间代码,生成...
设计模式的简要介绍,factory,vistor等,想了解的同学看一下吧
访问者模式表示一个作用于某对象结构中各元素的操作。它可以在不修改各元素类的前提下定义作用于这些元素的新操作,即动态的增加具体访问者角色。 访问者模式利用了双重分派。先将访问者传入元素对象的Accept方法中...
HKU vistor map and guide
SQLancer(综合查询Lancer)是一种工具,用于自动测试数据库管理系统(DBMS),以发现其实现中的逻辑错误。 我们将逻辑错误称为导致DBMS提取错误结果集(例如,通过省略记录)的错误。 SQLancer分为以下两个阶段:...