直接上代码:
Pom:
<dependency>
<groupId>jakarta.validation</groupId>
<artifactId>jakarta.validation-api</artifactId>
<version>2.0.2</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.1.7.Final</version>
</dependency>
分组接口:
public class ValidationGroups {
public interface Get {
}
public interface Put {
}
public interface Post {
}
public interface Delete{
}
}
Vo类:
@NotEmpty(message = "parentTypeOpenId不能为空", groups = ValidationGroups.Put.class)
private String parentTypeOpenId;
Controller:
@PutMapping(value = "/type/manage")
public HttpResult insertTypeManage (
@RequestBody @Validated(value= {ValidationGroups.Put.class}) IndicatorTypeManageReq req,
HttpServletRequest request) {
统一异常处理:
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.*;
/**
* 统一异常控制处理器
*/
@Slf4j
@RestControllerAdvice
public class UniteExceptionHandler {
/**
* 方法参数校验
*/
@ExceptionHandler(Exception.class)
public HttpResult exceptionHandler(Exception e) {
if (e instanceof MethodArgumentNotValidException) {
MethodArgumentNotValidException validException = (MethodArgumentNotValidException) e;
StringBuilder message = new StringBuilder("");
validException.getBindingResult().getAllErrors().forEach(err -> {
message.append(err.getDefaultMessage()).append(".");
});
return HttpResult.error(message.toString());
} else {
return HttpResult.error(e.getMessage());
}
}
}