标签:inter loading ORC cep res except null nat alt
由于valid框架校验需要通过实体类实现,本人懒不想写那么多实体,所以捕获异常抛出与valid相同的错误提示
@Valid控制层这样写就会根据实体类的注释进行参数校验
校验框架会根据注释校验参数并给出规定好的提示如果没写 message 那么只会提示不能为空
原以为直接在控制层使用这个注释也可以实现(可达鸭发现问题并没这么简单)
@Vaild 并不会校验这种直接写在控制层的校验
他大哥@Validated 该出现了
1.先在控制层加注释(其他不变)
2.这里是添加了个校验一个不通过直接不校验第二个参数的配置类(多参数也可以在控制层直接写@NotNull这类注释)
@Configuration public class ValidatorConfig { // 校验一个不通过不进行下一个校验直接返回 @Bean public Validator validator() { LocalValidatorFactoryBean factoryBean = new LocalValidatorFactoryBean(); MessageInterpolatorFactory interpolatorFactory = new MessageInterpolatorFactory(); factoryBean.setMessageInterpolator(interpolatorFactory.getObject()); factoryBean.getValidationPropertyMap().put("hibernate.validator.fail_fast", "true"); return factoryBean; } }
3.重点来了我们捕获 大哥 抛出的异常稍加修改返回前端,造成是同一个校验方式返回信息的错觉
@RestControllerAdvice public class ExceptionHandler { @org.springframework.web.bind.annotation.ExceptionHandler(ConstraintViolationException.class) public Result<Long> handle(ConstraintViolationException e) { String name = e.getMessage().substring(e.getMessage().indexOf(‘:‘) + 1, e.getMessage().length()); Result<Long> result = new Result<>(); result.setCode(10001); result.setMsg(name); return result; } }
比较low 通过:截取的提示内容(比较菜 cv码农)
这样就可以不用多走一层实体类直接校验参数了
贴一下效果图
@Validated 提示的也就是我们自己截取的
@Valid 提示的
我觉得吧去个空格也差不多 哈哈
至此
感谢观看 如有错误麻烦大佬提点 !!!
2020-09-04 16:43:46
标签:inter loading ORC cep res except null nat alt
原文地址:https://www.cnblogs.com/-ccj/p/13614723.html