|
85 | 85 | public interface AddGroup {}
|
86 | 86 | public interface UpdateGroup {}
|
87 | 87 | [2]给需要校验的实体类属性添加校验注解:
|
88 |
| - public class Student { |
89 |
| - @Min(value = 1, groups = {AddGroup.class}) |
90 |
| - private int studentNo; |
91 |
| - @NotBlank(message = "姓名不能为空", groups = {AddGroup.class, UpdateGroup.class}) |
92 |
| - private String name; |
93 |
| - @Min(value = 1,groups = {AddGroup.class, UpdateGroup.class}) |
94 |
| - private int age; |
95 |
| - @Pattern(regexp = "^[0|1]$",message = "性别只能是1:男 0:女", |
96 |
| - groups = {AddGroup.class,UpdateGroup.class}) |
97 |
| - private String gender; |
98 |
| - public Student() {} |
99 |
| - // get,set略 |
100 |
| - } |
101 |
| - [3]使用@Validated修饰参数为包含校验属性对象: |
102 |
| - @Controller |
103 |
| - public class TestGroupController { |
104 |
| - // 注: 参数BindingResult对象打开,则需要在方法中处理校验异常,关闭则可交由统一异常处理方法处理 |
105 |
| - @GetMapping("test3") |
106 |
| - @ResponseBody |
107 |
| - public String test3(@Validated(AddGroup.class) Student student, |
108 |
| - BindingResult result) { |
109 |
| - if(result.hasErrors()){ |
110 |
| - StringBuilder stringBuilder = new StringBuilder(); |
111 |
| - // 获取校验的错误结果 |
112 |
| - result.getFieldErrors().forEach(item->{ |
113 |
| - // 获取错误的属性的名字 |
114 |
| - String field = item.getField(); |
115 |
| - // 获取到错误提示 |
116 |
| - String message = item.getDefaultMessage(); |
117 |
| - stringBuilder.append(field).append("-").append(message).append(", "); |
118 |
| - }); |
119 |
| - return "提交的数据不合法: "+ stringBuilder.toString(); |
120 |
| - } |
121 |
| - return "success"; |
122 |
| - } |
123 |
| - } |
124 |
| - 注: |
125 |
| - 使用分组校验后,未添加分组的属性不会进行校验; |
126 |
| - BindingResult对象一旦在方法参数中使用,校验异常时会自动将异常捕捉封装进该对象,不会向外抛出; |
127 |
| - [4]测试: http://localhost:8080/test3?studentNo=1&name=柯南&age=8&gender=1 |
| 88 | + public class Student { |
| 89 | + @Min(value = 1, groups = {AddGroup.class}) |
| 90 | + private int studentNo; |
| 91 | + @NotBlank(message = "姓名不能为空", groups = {AddGroup.class, UpdateGroup.class}) |
| 92 | + private String name; |
| 93 | + @Min(value = 1,groups = {AddGroup.class, UpdateGroup.class}) |
| 94 | + private int age; |
| 95 | + @Pattern(regexp = "^[0|1]$",message = "性别只能是1:男 0:女", |
| 96 | + groups = {AddGroup.class,UpdateGroup.class}) |
| 97 | + private String gender; |
| 98 | + public Student() {} |
| 99 | + // get,set略 |
| 100 | + } |
| 101 | + [3]使用@Validated修饰参数为包含校验属性对象: |
| 102 | + @Controller |
| 103 | + public class TestGroupController { |
| 104 | + // 注: 参数BindingResult对象打开,则需要在方法中处理校验异常,关闭则可交由统一异常处理方法处理 |
| 105 | + @GetMapping("test3") |
| 106 | + @ResponseBody |
| 107 | + public String test3(@Validated(AddGroup.class) Student student, |
| 108 | + BindingResult result) { |
| 109 | + if(result.hasErrors()){ |
| 110 | + StringBuilder stringBuilder = new StringBuilder(); |
| 111 | + // 获取校验的错误结果 |
| 112 | + result.getFieldErrors().forEach(item->{ |
| 113 | + // 获取错误的属性的名字 |
| 114 | + String field = item.getField(); |
| 115 | + // 获取到错误提示 |
| 116 | + String message = item.getDefaultMessage(); |
| 117 | + stringBuilder.append(field).append("-").append(message).append(", "); |
| 118 | + }); |
| 119 | + return "提交的数据不合法: "+ stringBuilder.toString(); |
| 120 | + } |
| 121 | + return "success"; |
| 122 | + } |
| 123 | + } |
| 124 | + 注: |
| 125 | + 使用分组校验后,未添加分组的属性不会进行校验; |
| 126 | + BindingResult对象一旦在方法参数中使用,校验异常时会自动将异常捕捉封装进该对象,不会向外抛出; |
| 127 | + [4]测试: http://localhost:8080/test3?studentNo=1&name=柯南&age=8&gender=1 |
128 | 128 | 6.自定义校验规则:
|
129 | 129 | [1]自定义校验注解的基本格式:
|
130 | 130 | @Target({ElementType.FIELD, ElementType.METHOD})
|
|
0 commit comments