Spring 如何获取Hibernate Validator的ValidationException插入消息
运行Spring 如何获取Hibernate Validator的ValidationException插入消息,spring,validation,spring-mvc,hibernate-validator,Spring,Validation,Spring Mvc,Hibernate Validator,运行ex.getMessage()可以提供: Property 'firstname' threw exception; nested exception is javax.validation.ValidationException: Error validating field firstname of class com.inferoquest.entity.Employee: [ConstraintViolationImpl{interpolatedMessage='Name
ex.getMessage()
可以提供:
Property 'firstname' threw exception; nested exception is javax.validation.ValidationException:
Error validating field firstname of class com.inferoquest.entity.Employee:
[ConstraintViolationImpl{interpolatedMessage='Name cannot be shorter than 2 characters',
propertyPath=firstname, rootBeanClass=class com.inferoquest.entity.Employee,
messageTemplate='Name cannot be shorter than 2 characters'}]
我想从中提取的名称不能少于2个字符
。
更新:也许我还应该补充一点,我希望以一种干净的方式来做这件事,而不是使用正则表达式:-)
我已经看过这方面的文章了。它的答案可能包含了对我来说的解决方案,但老实说,对于这样一个简单的任务,我觉得它似乎太复杂了,老实说,我无法理解它,以至于无法使用它
有什么想法吗?A
ConstraintViolationException
包装了一组ConstraintViolations
(有关详细信息,请参阅)。您可以通过调用捕获的异常上的getConstraintViolations()
来获取这些冲突,在集合上迭代并生成包含冲突的所有消息的消息。实现上述解决方案
@RestControllerAdvice(basePackageClasses = RepositoryRestExceptionHandler.class)
public class GlobalExceptionHandler {
@ExceptionHandler(ConstraintViolationException.class)
public ResponseObject handleConstaintViolatoinException(final ConstraintViolationException ex) {
StringBuilder message = new StringBuilder();
Set<ConstraintViolation<?>> violations = ex.getConstraintViolations();
for (ConstraintViolation<?> violation : violations) {
message.append(violation.getMessage().concat(";"));
}
return new ResponseObject(HttpStatus.PRECONDITION_FAILED.value(), message.toString());
}
}
@RestControllerAdvice(basePackageClasses=RepositoryRestExceptionHandler.class)
公共类GlobalExceptionHandler{
@ExceptionHandler(ConstraintViolationException.class)
公共责任对象处理污染违反例外(最终约束例外){
StringBuilder消息=新建StringBuilder();
SET这就是问题所在,抛出的是ValidationException,而不是ConstraintViolationException,抛出该异常似乎对我没有任何好处。有什么想法吗?哪个层/框架抛出该异常?ValidationException
从何而来?可能它有一个ConstraintViolationException
作为原因?