struts的表单数据验证方式
1. 服务端Action验证:
/**
* struts自带表单字段的验证
* 第一种:重写validate方法,这个Action必须实现ActionSupport,如果数据不对,可以往FieldError添加字段错误信息
* 注意:表单一定要用struts的标签
* addFieldError里的key,是表单的name值
* validate对于Action来说是全局的,也就是说action的所有方法都会生效
* 在不需要验证的action方法上,可以声明一个注解@SkipValidation,忽略校验
* 第二种:写一个方法,格式:validate+方法名(第一个字母大写)
* 只针对方法有效,是一个局部的方法校验
* @return
*/
public void validate(){
//判断用户名是否为null
if(StringUtils.isEmpty(user.getUsername())){
addFieldError("username","用户名不能为空");
}
if(StringUtils.isEmpty(user.getPassword())){
addFieldError("password","密码不能为空");
}
}
2. xml声明式验证
全局声明方式:
在action包中声明UserAction-validation.xml文件
这种方式配置是全局配置,所有action的方法都会拦截验证
如果其它方法不想验证,可配置@SkipValidation注解
dtd约束可以在xwork-core的jar包中找
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
<!--第一种校验字段的方式:field-->
<field name="username">
<field-validator type="requiredstring">
<param name="fieldName">username</param>
<message>用户名不能为空-xml</message>
</field-validator>
</field>
<!--第二种校验字段方式:field-->
<validator type="requiredstring">
<param name="fieldName">password</param>
<message>密码不能为空-xml</message>
</validator>
</validators>
3. 局部声明方式
在action包中声明UserAction-register-validation.xml文件
声明方式【Action类名-方法名-validation.xml】
xml内容与上面的一样