1.手工编写代码方式
1.1对Action方法中所有方法执行之前的验证
Action类继承ActionSupport,重写validate()方法;
//Action中的所有方法执行之前都会进行数据验证
@Override
public void validate() {
if(user.getName()==null ||"".equals(user.getName().trim())) {
this.addFieldError("name", "用户名不能为空");
}
if(user.getMobile()==null||"".equals(user.getMobile().trim())) {
this.addFieldError("mobile", "手机号不能为空");
}else if(!Pattern.matches("^1[34578]\\d{9}$",user.getMobile())) {
this.addFieldError("mobile", "手机号格式不正确");
}
super.validate();
}
1.2对Action方法中指定方法执行之前的验证
指定方法执行之前验证在方法名后加上Action中的方法名,例:validateDoFirst(){}
//仅仅对dofirst()方法执行之前进行数据验证
public void validateDOFirst() {
if(user.getName()==null ||"".equals(user.getName().trim())) {
this.addFieldError("name", "用户名不能为空");
}
if(user.getMobile()==null||"".equals(user.getMobile().trim())) {
this.addFieldError("mobile", "手机号不能为空");
}else if(!Pattern.matches("^1[34578]\\d{9}$",user.getMobile())) {
this.addFieldError("mobile", "手机号格式不正确");
}
super.validate();
}
2. .xml配置方式
2.1对Action方法中所有方法执行之前的验证
在Action类的同一文件夹下创建文件,文件的命名格式:Action类名-validation.xml
例:LoginAction-validation.xml (注:-validation.xml为固定写法)
以下代码为.xml文件中的内容
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
<field name="name">
<field-validator type="requiredstring">
<message>用户名不能为空</message>
</field-validator>
</field>
<field name="mobile">
<field-validator type="requiredstring">
<message>手机号不能为空</message>
</field-validator>
<field-validator type="regex">
<param name="regex"><![CDATA[^1[34578]\d{9}$]]></param> <!-- 正则表达式格式 -->
<message>手机号格式不正确</message>
</field-validator>
</field>
</validators>
2.2对Action方法中指定方法执行之前的验证
指定方法执行之前验证的xml文件命名方式 :Action类名-Action方法名-validation.xml
例:LoginAction-login_doFirst-validation.xml (其他的与对所有方法执行之前进行验证的一样)