2
我写了一个异常映射器来覆盖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!";
}
...
}
是这样简单的事情吗?
这不是一个好方法 - 如果你想国际化这些消息怎么办?如果你要走这条路,就把注释的'消息'作为一个键,并使用普通的消息包。请参阅开箱即用约束注释的默认值。 – chrylis
我已经有一个处理国际化的字符串文件。我简化了这个例子,这样就不会成为焦点。我在这里感兴趣的是选择正确消息的机制,而不是从哪里检索。 – Brandon