struts2的数据验证

一、基本原理:
当一个Action类实现了ActionSupport类就间接实现了Validateable接口,而Validateable接口只有一个validate方法。当我们在action类里重写这个方法后,Struts2在调用指定的方法之前就会先执行validate方法。
而validate方法要和this.addFieldError()或this.addActionError()联合使用才能发挥验证的效果,
当Struts2发现了Field或Action错误,会自动返回”input”,而将要执行的其他方法不会被执行。既然返回了”input”,则需要在struts.xml文件中配一个相对应的result,而返回的页面自然是提交数据的页面。
二、示例及说明:
1、例如,validate方法如下:
public void validate() {
if("".equals(this.numbers) || null == this.numbers) {
this.addFieldError("number", "号码不能为空!");
this.addActionError("处理动作失败!");
}
}
2、说明:
2.1、number为该Action类的属性,由前台传进。
2.2、 this.addFieldError("number", "号码不能为空!");将错误信息压入Strust2值栈的errors中(可以在前台用<s:debug></s:debug>查看)
2.3、在页面中用以下代码获取错误信息:
<s:property value="errors.number"/>
(不要忘记在页面声明struts标签库:<%@taglib uri="/struts-tags" prefix="s"%>)
3、当进行action跳转时,不论调用哪个方法都会先执行validate方法,显然有些不合理。
   Struts2提供了针对单个方法的验证:
只需将validate改名为”validate方法名”即可,例如:
  我们要针对add方法,则验证方法为validateAdd(),这样当调用其他方法时,validateAdd()
就不会执。

你可能感兴趣的:(struts2)