本文共 1813 字,大约阅读时间需要 6 分钟。
实现步骤:
1.在dto中使用注解做参数校验,并且为参数添加get set方法,这是必须的,例如org.projectlombok lombok 1.18.4
2.在controller中,为接口方法需要校验的参数加上@Valid注解,并添加一个参数BindingResult紧跟在@Valid注解的参数后面,如果有多个参数加了@Valid,就有多个BindingResult。
3.编写一个切面类去统一处理返回的结果org.springframework.boot spring-boot-starter-aop
package com.nelson.edu.aspect;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.Around;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Pointcut;import org.springframework.stereotype.Component;import org.springframework.validation.BindingResult;import org.springframework.validation.FieldError;import org.springframework.validation.ObjectError;@Aspect@Componentpublic class ValidateAspect { @Pointcut("execution(public * com.nelson..edu.controller.*.*(..))") public void validate() { } @Around("validate()") public Object around(ProceedingJoinPoint joinPoint) throws Throwable { BindingResult bindingResult = null; Object[] args = joinPoint.getArgs(); if (args != null && args.length != 0) { for (Object object : args) { if (object instanceof BindingResult) { bindingResult = (BindingResult) object; break; } } } if (bindingResult != null && bindingResult.hasErrors()) { StringBuffer sb = new StringBuffer(); for (ObjectError objectError : bindingResult.getAllErrors()) { sb.append(((FieldError) objectError).getField() + " : ").append(objectError.getDefaultMessage() + ","); } sb.deleteCharAt(sb.length() - 1); return sb.toString(); } return joinPoint.proceed(); }}
转载地址:http://crqbb.baihongyu.com/