springMVC-validation校验

一,环境准备

springMVC-validation校验_第1张图片

二,配置校验器

在springmvc.xml中配置校验器


	  
	      
	      
	      
	  	

	   
	    
	  	  
	      
	      		
	      		classpath:CustomValidationMessages
	      		
	        
	      
	      
	      
	      
	        
	        
	  

三,注入适配器中


  

四,在pojo中添加校验规则

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

public class Items {
    private Integer id;
    
    //校验信息 商品名字在1-30个字符之间
    @Size(min=1,max=30,message="{items.name.longError}")
    private String name;

    private Float price;

    private String pic;
    //校验信息 生成日期不能为空
    @NotNull(message="{items.createtime.NullError}")
    private String createtime;

    private String detail;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name == null ? null : name.trim();
    }

    public Float getPrice() {
        return price;
    }

    public void setPrice(Float price) {
        this.price = price;
    }

    public String getPic() {
        return pic;
    }

    public void setPic(String pic) {
        this.pic = pic == null ? null : pic.trim();
    }

    public String getCreatetime() {
        return createtime;
    }

    public void setCreatetime(String createtime) {
        this.createtime = createtime;
    }

    public String getDetail() {
        return detail;
    }

    public void setDetail(String detail) {
        this.detail = detail == null ? null : detail.trim();
    }
}

五,配置validation的配置文件CustomValidationMessages.properties

可以在文件中配置错误信息,也可以在pojo类中添加校验信息的时候,在message中配置错误信息:如@Size(min=1,max=30,message=“商品名字不规范”).但一般不推荐这种方法,而在配置文件中配置错误信息

# 配置错误信息
items.name.longError =  商品名字长度不规范
items.createtime.NullError = 商品生成日期不能为空

六,捕获校验错误信息

//商品信息修改提交
   //在需要校验的pojo前添加@Validated,在需要校验的pojo后面添加BindingResult,接收校验出错信息
   //注意@Validated,BindingResul是配对出现的,并且必须一个在前一个在后,有多少个需要校验的pojo就需要多少对@Validated BindingResul
   @RequestMapping("/editItemsSubmit")
   public String editItemsSubmit(Model model,
	   @Validated ItemsCustom itemsCustom ,BindingResult bindingResult) throws Exception{
       
       //获取校验错误信息
       if(bindingResult.hasErrors()){
	   List objectErrors =  bindingResult.getAllErrors();
	   
	   //输出错误
	   for (ObjectError objectError : objectErrors) {
	       System.out.println(objectError.getDefaultMessage());
	   }
	   //将错误信息传到页面
	   model.addAttribute("itemsErrors", objectErrors);
	   //返回修改页面
	   return "forward:editItems.action";
       }

       //修改商品信息
       ItemsService.updateItems(itemsCustom);
       //页面转发
       return "forward:queryItems.action";
       
   }

七,分组校验

在pojo中定义校验规则,而pojo被多个controller所共用,不同的controller方法对同一个pojo进行校验,但每个方法需要不同的校验.所以需要将校验规则进行分组

创建接口

public interface ValidGroupOne {
    //接口不需要定义任何方法,仅对不同的校验规则进行分组
    //此组只校验商品的长度
}

在pojo中添加分组
在这里插入图片描述

在controller方法中使用指定的分组校验
在这里插入图片描述

你可能感兴趣的:(springmvc)