当对一个User对象进行新增和修改时。
当新增时,对于id可以为null;当为修改时,id却不能为空。而我们在接口用对象User对前端数据进行接收。
此时的Validated校验就会出现冲突,为了解决这种冲突,此时则对Validated进行分组校验。
实体类:
package org.sang.model.entity; import org.hibernate.validator.constraints.Length; import javax.validation.constraints.NotNull; public class User { @NotNull(groups = {valid2.class}) private Integer id; @NotNull(groups = {valid1.class,valid2.class}) @Length(min = 6,max = 32,groups = {valid1.class,valid2.class}) private String name; @NotNull(groups = {valid1.class,valid2.class}) private String sex; @NotNull(groups = {valid1.class,valid2.class}) @Length(min = 0,max = 100,groups = {valid1.class,valid2.class}) private Integer age; 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; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } /** * 新增时候参数校验 */ public interface valid1{ } /** * 修改时参数校验 */ public interface valid2{ } }
上面通过定义了两个interface,valid1和valid2,通过groups参数配置在参数校验信息上,相当于定义了两个检验方式,有的参数参与一种校验,有的参与两个校验方式。
2.Controller层控制传参校验方式
import org.sang.model.entity.User; import org.sang.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @RestController(value = "/user") public class UserController { @Autowired private UserService userService; /** * 新增用户 * @param user * @return */ @RequestMapping("/insert") @ResponseBody public User insert(@RequestBody @Validated(User.valid1.class) User user){ return userService.insert(user); } /** * 修改用户 * @param user * @return */ @RequestMapping("/update") @ResponseBody public boolean update(@RequestBody @Validated(User.valid2.class) User user){ return userService.update(user); } }
如上面代码可以控制每个方法传参时参与那种参数校验,可以根据实际业务场景,定义更多的interface去实现不同的参数校验方式。
转自https://blog.csdn.net/m0_37899908/article/details/112436992
@Validated自定义实现多种校验(分组校验)
最新推荐文章于 2024-05-28 20:54:27 发布