SpringBoot-表单验证-统一异常处理-自定义验证信息源( 三 )

当在controller中校验表单数据时,如果使用了groups,那么没有在这个分组下的属性是不会校验的
3.1 添加分组接口/** * 用于表单验证的通用分组接口 * @author ludangxin * @date 2021/8/5 */public interface ValidationInterface {/*** 新增分组*/interface add{}/*** 删除分组*/interface delete{}/*** 查询分组*/interface select{}/*** 更新分组*/interface update{}}如果还有其它特殊的分组要求 直接在DO中创建interface即可
例:如果还有个需要验证username 和 password(只有这两个参数) 的 select操作
直接在SysUser中创建UsernamePasswordValidView 的接口即可
3.2 修改实体类将属性进行分组
import lombok.Data;import javax.validation.constraints.Email;import javax.validation.constraints.NotEmpty;import javax.validation.constraints.NotNull;import javax.validation.constraints.Size;import java.io.Serializable;/** * 用户信息管理 * @author ludangxin * @date 2021/8/5 */@Datapublic class SysUser implements Serializable {private static final long serialVersionUID = 1L;/*** 主键*/@NotNull(message = "id不能为空", groups = {ValidationInterface.update.class})private Long id;/*** 用户名*/@NotEmpty(message = "用户名称不能为空", groups = {ValidationInterface.update.class,ValidationInterface.add.class})private String username;/*** 密码*/@Size(min = 6, max = 16, message = "密码长度必须在{min}-{max}之间", groups = {ValidationInterface.update.class,ValidationInterface.add.class})private String password = "123456";/*** 邮箱地址*/@Email(message = "邮箱地址不合法", groups = {ValidationInterface.update.class,ValidationInterface.add.class,ValidationInterface.select.class})@NotEmpty(message = "邮箱不能为空", groups = ValidationInterface.add.class)private String email;/*** 电话*/@Size(min = 11, max = 11, message = "手机号不合法", groups = {ValidationInterface.update.class,ValidationInterface.add.class,ValidationInterface.select.class})@NotEmpty(message = "手机号不能为空",groups = {ValidationInterface.add.class})private String phone;}3.3 修改控制器添加操作方法,并且方法形参上指定验证的分组
import com.ldx.valid.exception.BusinessException;import com.ldx.valid.model.SysUser;import com.ldx.valid.model.ValidationInterface;import com.ldx.valid.util.CommonResult;import lombok.extern.slf4j.Slf4j;import org.springframework.validation.BindingResult;import org.springframework.validation.FieldError;import org.springframework.validation.annotation.Validated;import org.springframework.web.bind.annotation.*;import javax.validation.constraints.NotEmpty;import java.util.ArrayList;import java.util.List;import java.util.Objects;import java.util.stream.Collectors;/** * 用户管理控制器 * @author ludangxin * @date 2021/8/5 */@Slf4j@RestController@RequestMapping("sys/user")public class SysUserController {private static final List<SysUser> USERS = new ArrayList<>();// 数据初始化static {SysUser user = new SysUser();user.setId(1L);user.setUsername("zhangsan");user.setPhone("13566666666");user.setEmail("example@qq.com");USERS.add(user);SysUser user1 = new SysUser();user1.setId(2L);user1.setUsername("lisi");user1.setPhone("13588888888");user1.setEmail("example1@qq.com");USERS.add(user1);}/*** 根据手机号或邮箱查询用户信息* @param sysUser 查询条件* @return 用户list*/@GetMappingpublic CommonResult queryList(@Validated(value = https://www.isolves.com/it/cxkf/kj/2021-08-11/ValidationInterface.select.class) SysUser sysUser,BindingResult result){FieldError fieldError = result.getFieldError();if(Objects.nonNull(fieldError)) {return CommonResult.error(getErrorMsg(fieldError));}String phone = sysUser.getPhone();String email = sysUser.getEmail();if(phone == null && email == null) {return CommonResult.success(USERS);}List queryResult = USERS.stream().filter(obj -> obj.getPhone().equals(phone) || obj.getEmail().equals(email)).collect(Collectors.toList());return CommonResult.success(queryResult);}/*** 新增用户信息* @param sysUser 用户信息* @return 成功标识*/@PostMappingpublic CommonResult add(@Validated(value = ValidationInterface.add.class)@RequestBody SysUser sysUser,BindingResult result){FieldError fieldError = result.getFieldError();if(Objects.nonNull(fieldError)) {return CommonResult.error(getErrorMsg(fieldError));}Long id = (long) (USERS.size() + 1);sysUser.setId(id);USERS.add(sysUser);return CommonResult.success("新增成功");}/*** 根据Id更新用户信息* @param sysUser 用户信息* @return 成功标识*/@PutMapping("{id}")public CommonResult updateById(@PathVariable("id") Long id,@Validated(value = ValidationInterface.update.class)@RequestBody SysUser sysUser,BindingResult result){FieldError fieldError = result.getFieldError();if(Objects.nonNull(fieldError)) {return CommonResult.error(getErrorMsg(fieldError));}for(int i = 0; i


推荐阅读