struts2中数据校验

数据校验

分类:

编程式校验

                   实现Validateable接口.接口中只有一个方法validate方法.我们可以在该方法中添加错误信息.

                   添加错误信息需要实现ValidationAware接口.该接口中有一些判断是否含有错误消息.获得错误消息.添加错误消息的方法.

配置式校验


校验流程:

Validation拦截器负责判断Action是否实现Validateable接口.如果实现就调用validate方法.

workflow拦截器判断Action是否实现ValidationAware接口. 如果实现就会判断Action中是否包含错误信息.如果包含错误信息, 停止拦截器递归调用,返回结果到名为input的结果页面中.

手动校验:

1、如果需要手动校验,必须实现接口:Validateable,提供一个方法 validate()

2、action所有方法校验

       实现接口,并实现方法validate()

3、action单个方法校验

       实现接口,并编写方法 validate方法() , 此处“方法”表示执行的方法名称,首字母大写。

       例如:add() 执行前需要校验,必须编写 validateAdd()

注意:先执行“单个方法”校验,再执行“所有方法”校验

4、提供错误提示,阻止目标方法的执行

       this.addFieldError("","") 给指定的字段设置提示信息

              jsp显示错误

       this.addActionMessage(aMessage)action提示提示信息

              jsp显示错误

       this.addActionError(anErrorMessage)action错误

              jsp显示错误


xml校验

单个方法校验

       位置:action类同包

       名称:actionClass-actionName-validation.xml

                actionClass :表示action类名

                actionName:表示action访问名称,及

                validation.xml :固定后缀

       内容:xml必须提供约束(DTD、schema[命名空间])

              dtd文件位置:xwork-core-2.3.15.3.jar!/xwork-validator-1.0.3.dtd

              dtd文件内容:


所有方法校验

       位置:action类同包

       名称:actionClass-validation.xml,解释同上

       内容:同上

struts提供的校验器

       校验配置文件位置:xwork-core-2.3.15.3.jar!/com/opensymphony/xwork2/validator/validators/default.xml


验证拦截器validate:负责添加错误消息

判断是否实现了validatable接口,调用validate()方法


workflow拦截器: 查看是否有错误消息,跳转到错误页面

查看action当中是否有错误消息,如果有,返回一个input的结果串,跳转到错误页面

Demo1Action:

package cn.itcast.e_validate;

import java.util.Arrays;
import java.util.Map;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.sun.net.httpserver.Authenticator.Success;
public class Demo1Action extends ActionSupport{
		private String name;
		
		
		public String execute(){
			System.out.println(name);
			return SUCCESS;
		}
//---------------------------------------------------
		@Override
		public void validate() {
			//验证代码放入该方法
			//判断name参数合法性
			if(name ==null || "".equals(name)){
				//不合法=> 调用addFieldError,添加错误信息
				addFieldError("name", "用户名不能为空!");
			}
			
			//写死,添加非表单字段错误信息
			addActionError("用户名已经重复!");
			//写死,添加提示信息
			addActionMessage("哈哈,这就是提示没别的意思!");
			
		}
		
//----------------------------------------------------		
		public String getName() {
			return name;
		}


		public void setName(String name) {
			this.name = name;
		}
}

struts.xml:

	
		
			/validate/demo1_2.jsp
			/validate/demo1_2.jsp
		
	


demo1.jsp:

 
    

demo1_2.jsp:

    
    	
    	
    
    
    
  

补充:

我们发现Struts2打印的类型转换错误信息是英文的,这说明我们需要自定义错误信息。自定义错误信息需要在Action所在目录下创建ActionName.properties文件(与Action同名的properties文件),然后在该文件中给出:invalid.fieldvalue.属性名=错误信息,其中invalid.fieldvalue是固定的。例如:invalid.fieldvalue.person=无法将请求参数转换成Person类型!

struts2中数据校验_第1张图片

PersonAction.proeprties

invalid.fieldvalue.person=无法把表单参数转换成Person类型




你可能感兴趣的:(JavaEE,struts)