`

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
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics