7.3 修改控制器删除方法中的BindingResult result参数,将错误直接抛给统一异常处理类去解决即可 。
import com.ldx.valid.exception.BusinessException;import com.ldx.valid.model.SysUser;import com.ldx.valid.model.ValidationInterface;import com.ldx.valid.service.UserService;import com.ldx.valid.util.CommonResult;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.validation.FieldError;import org.springframework.validation.annotation.Validated;import org.springframework.web.bind.annotation.*;import javax.annotation.Resource;import javax.validation.*;import javax.validation.constraints.NotEmpty;import java.text.MessageFormat;import java.util.ArrayList;import java.util.List;import java.util.stream.Collectors;/** * 用户管理控制器 * @author ludangxin * @date 2021/8/5 */@Slf4j@Validated@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) {String phone = sysUser.getPhone();String email = sysUser.getEmail();if(phone == null && email == null) {return CommonResult.success(USERS);}List7.4 启动测试查询:
? 输出错误的邮箱

文章插图
根据手机号查询:
? 输入空值手机号

文章插图
新增:
? 输入错误的手机号

文章插图
测试主动抛出业务异常:

文章插图
8. 自定义验证信息源8.1 修改配置文件
import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.support.ReloadableResourceBundleMessageSource;import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;import org.springframework.validation.beanvalidation.MethodValidationPostProcessor;import javax.validation.Validator;import java.util.Properties;/** * 配置 Hibernate 参数校验 * @author ludangxin * @date 2021/8/5 */@Configurationpublic class ValidatorConfig {@Beanpublic MethodValidationPostProcessor methodValidationPostProcessor(Validator validator) {MethodValidationPostProcessor postProcessor = new MethodValidationPostProcessor();postProcessor.setValidator(validator);return postProcessor;}/*** 实体类字段校验国际化引入*/@Beanpublic Validator validator() {LocalValidatorFactoryBean validator = new LocalValidatorFactoryBean();// 设置messages资源信息ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();// 多个用逗号分割messageSource.setBasenames("classpath:/messages/validation/messages");// 设置字符集编码messageSource.setDefaultEncoding("UTF-8");validator.setValidationMessageSource(messageSource);// 设置验证相关参数Properties properties = new Properties();// 快速失败,只要有错马上返回properties.setProperty("hibernate.validator.fail_fast", "true");validator.setValidationProperties(properties);return validator;}}
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 解读微服务下的契约测试——看微服务如何完整应用系统验证之道
- HTML-表单标签form详细讲解学习
- python怎么验证代理IP是否有效
- 基于 el-form 封装一个依赖 json 动态渲染的表单控件
- 想验证安装的操作系统是否正版,可以这样找到Win10产品密钥
- OAuth2+JWT 实现权限验证
- 用实验来验证宇宙大爆炸理论的科学家是 大爆炸宇宙学在观测上的依据有
- CSS3伪类:valid和:invalid实现表单校验
- k8s部署高可用配置中心apollo-手动验证成功
- JS 内存管理机制及验证
