Pau*_*oso 5 java validation spring annotations bean-validation
我有一类在属性上带有验证注释的类,如下所示:
@NotNull(payload = INVALID_CATEGORY_DESCRIPTION.class)
@Size(min = 1, max = 255, payload = INVALID_CATEGORY_DESCRIPTION_LENGHT.class)
private String description;
Run Code Online (Sandbox Code Playgroud)
然后,我有一个@ControllerAdvice来处理验证异常。
@ResponseStatus(BAD_REQUEST)
@ResponseBody
@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity<?> methodArgumentNotValidException(MethodArgumentNotValidException exception) {
Run Code Online (Sandbox Code Playgroud)
当一个或多个验证注释失败时,异常处理程序将按预期方式触发。
为了从注释中获取有效负载属性,我遍历具有验证错误的字段,然后遍历注释,然后才将注释名称与FieldError代码进行比较。有了注释,我可以访问有效负载。
我想知道是否有更优雅的方法来获取触发异常的有效负载或注释,就像message属性(exception.getMessage())一样。
假设您的起点是 a,您将通过ConstraintViolationException获取实例集。ConstraintViolationgetConstraintViolations()
每个ConstraintViolation都有一个getConstraintDescriptor(),它为您提供有关失败约束的元数据。一旦你有了,ConstraintDescriptor你就可以打电话了getPayload()。