java - 如何从 bean 验证注释中获取 payload 属性

标签 java spring validation annotations bean-validation

我有一个在我的属性上带有验证注释的类,就像这个:

@NotNull(payload = INVALID_CATEGORY_DESCRIPTION.class)
@Size(min = 1, max = 255, payload = INVALID_CATEGORY_DESCRIPTION_LENGHT.class)
private String description;

然后我有一个@ControllerAdvice 来处理验证异常。

@ResponseStatus(BAD_REQUEST)
@ResponseBody
@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity<?> methodArgumentNotValidException(MethodArgumentNotValidException exception) {

当一个或多个验证注释失败时,将按预期触发异常处理程序。

为了从注释中获取 payload 属性,我遍历具有验证错误的字段,然后遍历注释,然后才将注释名称与 FieldError 代码进行比较。有了注释,我就可以访问有效载荷。

我想知道是否有更优雅的方法来获取触发异常的负载或注释,就像消息属性 (exception.getMessage()) 一样。

最佳答案

假设您的起点是 ConstraintViolationException,您将通过 getConstraintViolations() 获取一组 ConstraintViolation 实例。

每个 ConstraintViolation 都有一个 getConstraintDescriptor(),它为您提供有关失败约束的元数据。获得 ConstraintDescriptor 后,您只需调用 getPayload()

关于java - 如何从 bean 验证注释中获取 payload 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36343617/

相关文章:

java - 数据未插入数据库

django - Django 中部分日期的日期便利(验证、显示等)

git - 如何在 Git 预提交 Hook 中获取作者和提交者 ID 列表?

java - Android-解析本地JSON数据(assets文件夹)

java - 使用 Apache POI 在 Excel 中创建条形图

java - 如何计算每个方法可能抛出的异常集,包括运行时异常?

java - Android 中 java.util.Calendar 的不同行为

java - Spring JPA审计空createdBy

spring - SpringCharacterEncodingFilter的目的是什么

javascript - 验证表单编号类型 Javascript