`

Struts2中的Vistor模式

    博客分类:
  • J2EE
阅读更多
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>
0
0
分享到:
评论

相关推荐

    struts2.1.6 convertion,rest两插件的例子

    struts2.1.6 convertion插件(即注释方式配置)的helloworld 默认调用index()方法 文档说明用...struts2.1.6 vistor校验例子 都是我测试例子,写到一块了 有点乱 哪为高手给我说下 rest-plugin有什么好处 项目中有说明文件

    vistor软件与tsm安装指南

    在我们的案例中,`vistor_2_1_1.tgz`是一个包含Vistor软件的压缩包,我们需要先将其解压并安装。 1. **Vistor软件的安装步骤**: - 解压文件:使用命令行工具(如Linux的tar命令)解压`vistor_2_1_1.tgz`。 - ...

    vistor.zip

    【vistor.zip】压缩包文件主要包含了一个名为`vistor_2_1_1.tgz`的安装包,从文件名可以推测这可能是`Vistor`软件的一个版本更新,具体来说是版本2.1.1。`tgz`文件是一种常见的归档格式,它是`targz`的缩写,由`tar`...

    设计模式之访问者模式Vistor

    在软件工程中,当系统需求发生变化,需要为现有的类层次结构添加新的操作时,访问者模式能提供一个优雅的解决方案。该模式的核心在于将对对象的操作与对象的结构分离,使得操作集合可以独立于对象结构进行变化。 ...

    C#设计模式之Visitor

    设计模式是软件开发中的经验总结,它提供了解决常见问题的可复用解决方案。在C#编程中,设计模式可以帮助我们编写更灵活、可扩展和易于维护的代码。"Visitor"(访问者)设计模式是一种行为模式,它允许我们在不修改...

    C++设计模式代码资源24_Vistor_访问器.zip

    总的来说,`C++设计模式代码资源24_Vistor_访问器.zip`提供了一个学习和实践C++访问者模式的实例,通过`Visitor1.cpp`和`Visitor2.cpp`的代码,我们可以深入理解如何在实际项目中运用这一模式,提高代码的灵活性和可...

    vistor虚拟带库linux所需的rpm包

    在Linux环境中,正确配置和使用Vistor虚拟带库能有效提升数据备份和恢复的效率,同时减少了对物理磁带库的依赖,降低了维护成本。在安装过程中,注意系统兼容性和软件版本匹配,确保所有必要的依赖项都已安装,才能...

    vistor虚拟带库安装程序

    在本案例中,"vistor虚拟带库安装程序"是专为Linux操作系统设计的一款软件,用于在Linux环境下搭建和管理虚拟带库。 首先,我们需要理解Linux系统的基础知识。Linux是一种开源的操作系统,广泛应用于服务器、数据...

    C++设计模式课件24_Vistor_访问器.pdf

    ### C++设计模式之访问者(Vistor)模式解析 #### 概述 在软件开发领域,设计模式作为解决特定问题的最佳实践集合被广泛应用。其中,“访问者(Visitor)”模式是面向对象设计中的一种常用模式,它允许我们向一组...

    vistor安装指南.doc

    近期学习tsm备份,用vistor虚拟带库搭建实验环境。文档涵盖了整个环境的搭建过程,每一步很详细。

    设计模式-行为模式

    2. **策略模式(Strategy)**:该模式允许在运行时选择算法或策略。`Strategy.h`可能包含了一个策略接口和几个具体的策略类,它们实现了不同的算法,可以根据需求灵活切换。 3. **中介者模式(Mediator)**:这个模式...

    c#代码介绍23种设计模式-22访问者模式(附代码)

    这里需要明确一点:访问者模式中具体访问者的数目和具体节点的数目没有任何关系。 3. 从访问者的结构图可以看出,访问者模式涉及以下几类角色: 1)抽象访问者角色(Vistor):声明一个活多个访问操作,使得所有具体...

    访问者模式代码

    访问者模式是一种设计模式,属于行为模式类别,其主要目的是在不修改对象结构的前提下,为对象结构中的元素提供新的操作。这种模式的核心思想是将数据结构与数据操作分离,使得增加新的操作变得容易,同时也避免了对...

    Visitor模式Visitor模式

    在这个例子中,开发者可以使用 Visitor 模式来增加一个新的虚函数,而不需要修改原有的类层次。例如,开发者可以增加一个新的类,例如 `Visitor`,并在这个类中实现新的虚函数。然后,开发者可以在 `Personnel` 类中...

    C++设计模式之外观模式

    我们在使用visual studio进行编译C++代码时,你只是在菜单中选择了Build,然后visual studio就开始了一堆的编译工作;你应该知道,因为你的一个简单的Build动作,编译器在后台会进行语法分析,生成中间代码,生成...

    HKU Campus tour

    HKU vistor map and guide

Global site tag (gtag.js) - Google Analytics