Spring @Validated @Controller не отображался при добавлении @Validated. Удаление любого наследства от самого контроллера помогло. В противном случае ответ Сабир Хана сработал и помог.
ользую Spring Boot 1.5.2.RELEASE и не могу включить JSR - 349 (проверка bean 1.1) для@RequestParam
& @PathVariable
в самом методе.
Для запросов POST, если параметр метода является Java POJO, тогда аннотировать этот параметр@Valid
работает нормально, но комментирует@RequestParam
& @PathVariable
с чем-то вроде@NotEmpty
, @Email
не работает.
Я аннотировал класс контроллера с Spring@Validated
Есть много вопросов по SO, и я прокомментировалэтот ответ что это не работает для меня.
Spring Boot включает в себя -validation-api-1.1.0.Final.jar
а такжеhibernate-validator-5.3.4.Final.jar
.
Я что-то упустил?
Пример кода,
@RequestMapping(method = RequestMethod.GET, value = "/testValidated", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseBean<String> testValidated(@Email @NotEmpty @RequestParam("email") String email) {
ResponseBean<String> response = new ResponseBean<>();
response.setResponse(Constants.SUCCESS);
response.setMessage("testValidated");
logger.error("Validator Not called");
return response;
}
Ниже обработчик никогда не вызывается, когда я отправляю пустые значения или неправильно сформированный адрес электронной почты дляemail
& контроль всегда идет в сtestValidated
метод.
@ExceptionHandler(ConstraintViolationException.class)
@ResponseBody
@ResponseStatus(HttpStatus.BAD_REQUEST)
public ResponseBean handle(ConstraintViolationException exception) {
StringBuilder messages = new StringBuilder();
ResponseBean response = new ResponseBean();
exception.getConstraintViolations().forEach(entry -> messages.append(entry.getMessage() + "\n"));
response.setResponse(Constants.FAILURE);
response.setErrorcode(Constants.ERROR_CODE_BAD_REQUEST);
response.setMessage(messages.toString());
return response;
}
ResponseBean<T>
мой класс приложения