Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 如何获取Hibernate Validator的ValidationException插入消息_Spring_Validation_Spring Mvc_Hibernate Validator - Fatal编程技术网

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
作为原因?