java - hibernate validator : Overriding Constraint Violation Messaging

标签 java validation bean-validation hibernate-validator

我编写了一个异常映射器来覆盖 Hibernate Validator 生成的响应,这样我就可以对响应中返回的消息进行一些控制。

我的问题是,我很难找到一种简单的方法来根据违反约束的类型进行“切换”,因此,我在编写自定义消息时遇到了麻烦。理想情况下,我可以根据注释进行切换,并在响应中返回自定义消息。理想情况下,它看起来像这样:

@Override
public Response toResponse(ConstraintViolationException exception) {

    ConstraintViolation violation = exception.getConstraintViolations().iterator().next();

    String message = null;
    switch (violation.getType()) {
        case SomeEnum.NOT_NULL:
            message = "It's not null!";
            break;
        default:
            message = "Other message!";
    }

    ...
}

像这样简单的事情可能吗?

最佳答案

ConstraintViolation#getConstraintDescriptor() 应该对你有帮助。除其他事项外,返回的描述符公开了违反的约束注释类型:

if ( violation.getConstraintDescriptor().getAnnotation().annotationType() == NotNull.class ) { ... }

话虽如此,通过实现自定义 MessageInterpolator 可能会更好地解决该问题,它会立即在约束违规范围内为您提供预期的消息。

关于java - hibernate validator : Overriding Constraint Violation Messaging,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40923400/

相关文章:

java - 从 java 运行 shell 脚本 - 未完成任务

java - Glassfish/Java EE6/MySQL 中的特殊字符问题

arrays - 如何在Laravel 5.4中验证数组

R Shiny - 如果两个输入具有相同的值,如何显示反馈消息(使用shinyFeedback)

c# - 如果存在验证错误,也要更新 ViewModel 中的属性

java - JSR 303 自定义约束覆盖

java - JSR303 - 应用按顺序定义的所有验证组

java - 2 个集合中的一个对象(引用)

java - 作为一个新手,我找不到程序中的错误

spring-mvc - 使用 Thymeleaf 的 "application-specific"在 Web UI 中显示 "fields.hasErrors"验证错误