对于表单提交的数据,除了前端进行验证之外,还可以通过后台来进行验证,但是后台验证方法没有前端响应及时,而且后台数据验证会使数据经过层层网关然后返回,所以不推荐使用,但是可以作为辅助,防止脏数据进入数据库.Struts2提供了该方法
使用此验证方法需要在struts.xml相关的action表现下配
<result name="input">/login.jsp</result>
标签
校验顺序为针对性校验方法==>validate()方法==>框架验证==>目标方法
-
通用方法验证,即该Action类中的所有方法都会通过该验证方法.
在Action类中重写ActionSupport
父类中的validate()
方法,并在此方法内进行逻辑判断 -
单个方法验证,即指向Action类中的某个方法,只有使用该方法前才会调用该验证方法
在该Action类中创建validateXxx()
方法,其中Xxx
为要验证的方法名首字母大写,this.addFieldError
为添加提示信息
public void validateLogin(){
System.out.println("++++++++方法验证+++++++");
if(user.getName().trim().length()==0){
this.addFieldError("name", "用户名不能为空!");
}
if(user.getPassword().trim().length()==0){
this.addFieldError("name", "密码不能为空!");
}
}
在前端页面接收错误信息时使用
<s:fielderror fieldName="name"></s:fielderror>
<s:fielderror fieldName="password"></s:fielderror>
接收,其中key值为addFieldError
时命名的key值
3. 利用Struts2验证框架进行验证
引用框架验证前需要在struts.xml文件的action标签中引入默认拦截器栈
<interceptor-ref name="defaultStack"></interceptor-ref>
此方法主要是为了引入
<interceptor-ref name="validation"> <param name="excludeMethods">input,back,cancel,browse</param> </interceptor-ref>
拦截器
特点:相比于验证方法,无需在Action类中编写验证方法进行判断,验证主要靠xml配置文件来实现验证逻辑的设定
1
. 验证框架作用于action类的所有方法
在action同级目录下创建Action类名-validation.xml
文件,在其中配置验证的信息
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.dtd">
<validators>
<field name="name">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>用户名不能为空!!!</message>
</field-validator>
</field>
</validators>
在前端页面接收错误信息时使用
<s:fielderror fieldName="name"></s:fielderror>
接收,其中key值为<field name="name">
中的name值;
2. 针对于Action类中方法
在action同级目录下创建Action类名-Struts.xml中action中的name值-validation.xml
文件,其中配置验证的信息
同 (1)
框架验证的其他验证方法请参考下一篇