Java hibernate验证程序在版本4和5中引发不同的异常

Java hibernate验证程序在版本4和5中引发不同的异常,java,spring-boot,bean-validation,nhibernate-validator,Java,Spring Boot,Bean Validation,Nhibernate Validator,我正在做一个带有自定义异常映射的SpringBootREST应用程序。异常映射与此无关,但我希望在版本4中使用hibernate validator(因为我必须使用java验证api版本1.0) 现在我正在初始化@configuration类中的验证器: @Bean public Validator validator() { return new LocalValidatorFactoryBean(); } @Bean MethodValidationPostProcesso

我正在做一个带有自定义异常映射的SpringBootREST应用程序。异常映射与此无关,但我希望在版本4中使用hibernate validator(因为我必须使用java验证api版本1.0)

现在我正在初始化@configuration类中的验证器:

 @Bean
public Validator validator() {
    return new LocalValidatorFactoryBean();
}   

@Bean
MethodValidationPostProcessor methodValidationPostProcessor(Validator validator) {
        MethodValidationPostProcessor processor = new MethodValidationPostProcessor();
    processor.setValidator(validator);
    return processor;
}
我创建了一个资源:

@Path("/validation")
@Produces("application/json")
@Validated
public interface ValidationTestResource {
    @POST
    @Path("/test")
    @Validated
    public void translatedAndMappedException(@RequestBody @Valid 
         ValidationTestDto testDto);
    }
}
资源可以工作,验证也可以工作。但每当我违反ValidationTestDto上的约束时,我就会得到一个异常。然而,这是org.hibernate.validator.method.MethodConstraintViolationException,它只指定了验证失败的方法和参数(translatedAndMappedException,参数testDto)。这使得返回违反的字段列表毫无用处,因为该列表不存在

但是如果我使用hibernate validator version 5+,我会得到一个适当的javax.validation.ConstraintViolationException,并且我可以提取未验证字段的完整列表

问题是:

1.如果我只是做错了什么,Hibernate validator 4就是这样


2.如果我可以使用spring中的某个东西来验证并忘记hibernate validator,它会正确地执行吗?

spring提供了自己的验证接口,因此您可以直接尝试使用这些接口。文档是。您可以使用
BindingResult
查看产生的验证错误的详细信息。

您知道h吗如何在Spring Rest控制器方法上自动调用
ExecutableValidator
?这是处理
@RequestParam
&
@PathVariable
值所必需的。@Sabirkan您的意思是您只想验证PathVariable和requestParams?然后我的方法就可以工作了,只需在您的参数上添加验证注释即可