上接上篇博客
需求
在pojo中定义校验规则,而pojo是被多个Controller所共用,当需要不同的Controller方法对同一个pojo进行校验,但是每个Controller的方法需要不同的校验规则
解决思路:
定义多个校验分组即可(是一个接口),在分组中定义不同的规则
每个Controller方法使用不同的校验规则
校验分组
package com.alex.ssm.controller.validation;
/**
* Created by Alex on 2017/6/29.
* 校验分组1
*/
public interface ValidGroup1 {
//不需要定义任何方法,仅仅是对不同的校验规则进行分组
//此分组只校验商品名称的长度
}
在校验规则中添加分组
//校验名称:1-30字符之间
//message提示校验出错显示的信息
//groups:用于区别次校验属于哪个分组,groups可以定义多个分组
@Size(min = 1,max = 30,message = "{items.name.length.error}",groups = {ValidGroup1.class})
在Controller方法中使用分组校验
//商品修改
//在需要校验的pojo前,添加@Validated,在需要校验的pojo后添加BindingResult bindingResult接收校验出错信息
//注意!!@Validated和BindingResult bindingResult 是配对出现的,并且在形参里的顺序是固定的(一前一后)
//value 指定使用ValidGroup1分组的校验规则
@RequestMapping("/editItemsSubmit")
public String editItemsSubmit(Model model, HttpServletRequest request, Integer id, @Validated(value = {ValidGroup1.class}) ItemsCustom itemsCustom , BindingResult bindingResult) throws Exception{
效果
即使违反多条校验规则,该Controller也只对其中一条分组校验进行显示