Struts2 -------------------- Validation
转自:http://blog.csdn.net/anyoneking/archive/2007/08/09/1733885.aspx
5.1节:校验类型和配置方法说明
从Struts2 校验框架在验证的场所上可以分为:客户端校验和服务端校验。
客户端校验是指,在HTML画面上自动生成JavaScript校验代码,在用户提交到服务器之前在客户端浏览器中进行校验。默认位客户端校验。
服务端校验是指,在数据提交到服务器上之后,在Action处理之前,对客户但提交的数据进行校验。
从Struts2校验框架的配置上可以分为:Java Annotation配置和XML配置文件配置
Java Annotation配置是指,使用Java Annotation语法,在Java源代码上标记需要校验的内容,和校验的方式。
XML配置文件配置是指,使用XML配置文件配置需要校验的内容和校验方式。
5.2节:Validator与Validation
Validation指校验,Validator指谁来校验。
在Struts2框架中Validator必须在系统中注册,如果没有注册,系统使用默认的注册,这些validator注册文件在xwork的jar文件中,内容如下:
我们看看上面的配置文件,首先每一个validatior都必须有一个type属性,type属性的值为我们前面定义的validator的name。
Message提供了校验出错的信息,message有一个属性key,通过可以可以找到i18n文件定义的内容,但是key并不是必须的。Message体内部的消息为默认消息,当i18n文件中不存在时表示该消息。消息中可以使用${}来引用被校验的对象例如:${foo},${bar}
5.6节:Validator和Field Validator
Field Validator用来校验一个字段,例如:
校验的顺序:首先Validator,其次Field Validator,但是在Validator或者Field Validator执行的过程中,顺序按照xml文件中的定义。短路的意思是,一旦一个短路的校验出错,其余后续的校验将不再进行。例如上述的顺序是:
1)Plain Validator 1
2)Plain Validator 2
3)Field Validators for email field
4)Field Validators for email2 field
由于Validator 2是短路的,一旦Validator 2校验出错,则email和email2都不会进入校验过程。
5.8节:validate方法
ActionSupport实现了Validatable接口,这个接口中定义了一个validate方法,通过重写validate方法可以完成更详细的校验,例如:public void validate() { User user = getUser(); if (StringUtils.isBlank(user.getName())) { addActionError(getText("user.name.empty")); } if (StringUtils.isBlank(user.getAddress())) { addActionError(getText("user.address.empty")); }}
ActionSupport同时也实现了ValidationAware接口,该接口提供了addActionError等输出错误消息的方法。