1,action中重写 validate方法

action继承ActionSuppott 重写 validate方法(全局的)
action中所有方法都要经过该方法中的验证才能执行

/**
* @Description: 重写validate方法(strut2自带表单验证) 验证表单数据
* @return: void
* @Author: LIANG
* @Date: 2021/1/24 13:22
*/
@Override
public void validate() {
if(StringUtils.isEmpty(user.getUsername())){
addFieldError("username","用户名不能为空");
}
if(StringUtils.isEmpty(user.getPassword())){
addFieldError("password","密码不能为空");
}
}

全局改局部:
1,写方法名格式为validate+方法名(首字母大写)的验证方法,这种方法只对改方法执行有效

public void validateRegister() {
if(StringUtils.isEmpty(user.getUsername())){
addFieldError("username","用户名不能为空");
}
if(StringUtils.isEmpty(user.getPassword())){
addFieldError("password","密码不能为空");
}
}

2,可以对不需要经过验证的方法添加 @SkipValidation注解

Struts2 Action验证比表单_struts

2,xml方式

全局
在action同一目录下创建格式名为action类名-validation.xml xml文件

在\struts2-core-2.5.26.jar!\xwork-validator-1.0.dtd中找到dtd并引入创建的xml文件中

Struts2 Action验证比表单_用户名_02

<?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>
<!-- 使用file校验字段-->
<field name="username">
<field-validator type="requiredstring">
<param name="fieldName">username</param>
<message>用户名不能为空</message>
</field-validator>
</field>
<validator type="requiredstring">
<param name="fieldName">password</param>
<message>密码不能为空</message>
</validator>
</validators>

Struts2 Action验证比表单_用户名_03


全局改局部:

在action同一目录下创建格式名为action类名-方法名-validation.xml xml文件注:使用以上方式验证表单 需要使用struts内置的标签

xml的数据规约param参数参考default.xml中标注的类

path:\struts2-core-2.5.26.jar!\com\opensymphony\xwork2\validator\validators\default.xml

Struts2 Action验证比表单_表单验证_04