Я использую аннотацию Spring @Validated для проверки переменной пути запроса Get. Я получаю исключение ConstraintViolationException, которое я обрабатываю в классе @ControllerAdvice, но проблема в том, что мне нужно имя поля, и я получаю arg0 вместо самого имени (myField)
Я знаю, что у меня есть похожие вопросы, но я попробовал следующее, но ничего не решило.
Я уже пытался перебрать исключение
for (Iterator<ConstraintViolation<?>> iterator = set.iterator(); iterator.hasNext(); ) {
ConstraintViolation<?> next = iterator.next();
System.out.println(((PathImpl)next.getPropertyPath())
.getLeafNode().getName() + " " +next.getMessage());
}
, а также компиляция с -параметрами (в pom.xml)
<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();
}
Это метод, который я проверяю
public void method(@RequestParam(value = "myField") @Pattern(regexp = "^([A-Za-z0-9]+)$", message = "is not valid") String myField)
Но, в конце концов, я все еще получаю arg0 при проверке объекта исключения.
Использование Java 8 с Spring Boot 1.5