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有什么好处 项目中有说明文件
在我们的案例中,`vistor_2_1_1.tgz`是一个包含Vistor软件的压缩包,我们需要先将其解压并安装。 1. **Vistor软件的安装步骤**: - 解压文件:使用命令行工具(如Linux的tar命令)解压`vistor_2_1_1.tgz`。 - ...
【vistor.zip】压缩包文件主要包含了一个名为`vistor_2_1_1.tgz`的安装包,从文件名可以推测这可能是`Vistor`软件的一个版本更新,具体来说是版本2.1.1。`tgz`文件是一种常见的归档格式,它是`targz`的缩写,由`tar`...
在软件工程中,当系统需求发生变化,需要为现有的类层次结构添加新的操作时,访问者模式能提供一个优雅的解决方案。该模式的核心在于将对对象的操作与对象的结构分离,使得操作集合可以独立于对象结构进行变化。 ...
设计模式是软件开发中的经验总结,它提供了解决常见问题的可复用解决方案。在C#编程中,设计模式可以帮助我们编写更灵活、可扩展和易于维护的代码。"Visitor"(访问者)设计模式是一种行为模式,它允许我们在不修改...
总的来说,`C++设计模式代码资源24_Vistor_访问器.zip`提供了一个学习和实践C++访问者模式的实例,通过`Visitor1.cpp`和`Visitor2.cpp`的代码,我们可以深入理解如何在实际项目中运用这一模式,提高代码的灵活性和可...
在Linux环境中,正确配置和使用Vistor虚拟带库能有效提升数据备份和恢复的效率,同时减少了对物理磁带库的依赖,降低了维护成本。在安装过程中,注意系统兼容性和软件版本匹配,确保所有必要的依赖项都已安装,才能...
在本案例中,"vistor虚拟带库安装程序"是专为Linux操作系统设计的一款软件,用于在Linux环境下搭建和管理虚拟带库。 首先,我们需要理解Linux系统的基础知识。Linux是一种开源的操作系统,广泛应用于服务器、数据...
### C++设计模式之访问者(Vistor)模式解析 #### 概述 在软件开发领域,设计模式作为解决特定问题的最佳实践集合被广泛应用。其中,“访问者(Visitor)”模式是面向对象设计中的一种常用模式,它允许我们向一组...
近期学习tsm备份,用vistor虚拟带库搭建实验环境。文档涵盖了整个环境的搭建过程,每一步很详细。
2. **策略模式(Strategy)**:该模式允许在运行时选择算法或策略。`Strategy.h`可能包含了一个策略接口和几个具体的策略类,它们实现了不同的算法,可以根据需求灵活切换。 3. **中介者模式(Mediator)**:这个模式...
这里需要明确一点:访问者模式中具体访问者的数目和具体节点的数目没有任何关系。 3. 从访问者的结构图可以看出,访问者模式涉及以下几类角色: 1)抽象访问者角色(Vistor):声明一个活多个访问操作,使得所有具体...
访问者模式是一种设计模式,属于行为模式类别,其主要目的是在不修改对象结构的前提下,为对象结构中的元素提供新的操作。这种模式的核心思想是将数据结构与数据操作分离,使得增加新的操作变得容易,同时也避免了对...
在这个例子中,开发者可以使用 Visitor 模式来增加一个新的虚函数,而不需要修改原有的类层次。例如,开发者可以增加一个新的类,例如 `Visitor`,并在这个类中实现新的虚函数。然后,开发者可以在 `Personnel` 类中...
我们在使用visual studio进行编译C++代码时,你只是在菜单中选择了Build,然后visual studio就开始了一堆的编译工作;你应该知道,因为你的一个简单的Build动作,编译器在后台会进行语法分析,生成中间代码,生成...
HKU vistor map and guide