对不一致或不明确表示抱歉。
我使用 Web 应用程序异常映射器来处理异常。它检查错误是由 Web 应用程序异常还是约束违规异常产生的。
if (exception instanceof ConstraintViolationException) {
Set<ErrorResponse> errorResponses = new HashSet<>();
for (ConstraintViolation violation : ((ConstraintViolationException) exception).getConstraintViolations()) {
errorResponses.add(new ErrorResponse(violation.getPropertyPath().toString(),violation.getMessage()));
}
builder.entity(new WebApplicationError(errorResponses));
}
另外,我检查了是否是 JsonMapping 异常
if (exception instanceof JsonMappingException) {
ResourceBundle bundle = ResourceBundle.getBundle("ValidationMessages");
Set<ErrorResponse> errorResponses = new HashSet<>();
for(Reference ref : ((JsonMappingException) exception).getPath()) {
String className = ref.getFrom().getClass().getName()
.substring(ref.getFrom().getClass().getName()
.lastIndexOf(".") + 1).toLowerCase();
String key = "the.key";
try {
message = bundle.getString(key);
} catch (MissingResourceException e) {
logger.error(e.getMessage());
}
errorResponses.add(new ErrorResponse(ref.getFieldName(), message));
}
builder.entity(new WebApplicationError(errorResponses));
}
JsonMapping 异常
违反约束