我编写了一个异常映射器来覆盖 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/