可以在Controller方法中的参数前加注解 @Validated

UsersController.java

// 参数通过json,请求体@PostMapping("/saveUsers")public Object saveUsers(@RequestBody @Validated Users users) {return users ;}// 参数通过表单的方式 key=value@PostMapping("/saveUsers")public Object saveUsers(@Validated Users users) {return users ;}

Users.java

@Datapublic class Users {@NotEmpty(message = "姓名不能为空")private String name ;@NotEmpty(message = "性别不能为空")private String sex ;@NotNull(message = "年龄不能为空")private Integer age ;}

这里用到的注解来自JSR303

下面一段文字及图片是从网络上摘取的

JSR-303

JSR-303 是JAVA EE 6 中的一项子规范,叫做Bean Validation,Hibernate Validator 是 Bean Validation 的参考实现 . Hibernate Validator 提供了 JSR 303 规范中所有内置 constraint 的实现,除此之外还有一些附加的 constraint。

fd1b7a79eb5ec9c9e8deb11fd35b3ff8.png

该图片来源网络

定义全局异常处理

@RestControllerAdvicepublic class ControllerAdvice {  // 这是拦截表单参数; Content-Type: application/x-www-form-urlencoded@ResponseStatus(HttpStatus.OK)@ExceptionHandler({BindException.class})public Object bindException(BindException e) {    BindingResult bindingResult = e.getBindingResult() ;      return Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage() ;}  // 这是拦截通过body体为json数据;Content-Type: application/json@ResponseStatus(HttpStatus.OK)@ExceptionHandler({MethodArgumentNotValidException.class})public Object bindException(MethodArgumentNotValidException e) {    BindingResult bindingResult = e.getBindingResult() ;    return Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage() ;}}

这里我没有对返回结果做统一处理,直接就是返回错误信息。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐