我正在使用Spring @Validated批注来验证Get Request Path变量。我确实抛出了ConstraintViolationException,该异常是在@ControllerAdvice类中处理的,但是问题是我想要字段的名称,并且我正在获取arg0而不是名称本身(myField)
我知道我也有类似的问题,但我尝试了以下方法,但没有解决。
我已经尝试遍历异常
Point<V>()
以及使用-parameters进行编译(在pom.xml中)
for (Iterator<ConstraintViolation<?>> iterator = set.iterator(); iterator.hasNext(); ) {
ConstraintViolation<?> next = iterator.next();
System.out.println(((PathImpl)next.getPropertyPath())
.getLeafNode().getName() + " " +next.getMessage());
}
还要为验证器创建一个配置文件,如下所示:
<configuration>
<source>1.8</source>
<target>1.8</target>
<forceJavacCompilerUse>true</forceJavacCompilerUse>
<compilerArgs>
<arg>-parameters</arg>
这是我正在验证的方法
@Bean
public Validator validator(){
final ValidatorFactory validatorFactory = Validation.byDefaultProvider()
.configure()
.parameterNameProvider(new ReflectionParameterNameProvider())
.buildValidatorFactory();
return validatorFactory.getValidator();
}
但是毕竟,当检查异常对象时,我仍然得到arg0。 在Spring Boot 1.5中使用Java 8
答案 0 :(得分:0)
(以防万一将来有人遇到这个问题,我想在这里分享我的发现)
最后,我注意到我在我的Application类中注入了@Validator 返回Validation.buildDefaultValidatorFactory()。getValidator();
在我的案例中,这与Spring使用的验证器搞混了