У меня есть контроллер выглядит следующим образом:
@RestController
@RequestMapping(value="/api/events")
public class EventController{
@Inject
private EventValidator eventValidator;
@InitBinder
@Qualifier("eventValidatior")
private void initBinder(WebDataBinder binder){
binder.setValidator(eventValidator);
}
@PostMapping()
public ResponseEntity<EventModel> save(@Valid @RequestBody EventRequest request, BindingResult result){
if(result.hasErrors()){
//some validation
}
//some other logic
}
}
Тогда у меня есть EventRequest
pojo:
public class EventRequest{
private String eventName;
@Valid
@NotNull
private List<Event> events;
//setters and getters
}
В моем контроллере, у меня есть 2 типа проверки,InitBinder
, а также проверка Java-бина (JSR-303), которая использует @NotNull
в классе EventRequest.
Проблема в том, что если в контроллере есть BindingResult result
, аннотация @NotNull
не будет работать.И даже каскадная проверка в классе Event
тоже не работает.
Почему, как я могу иметь оба типа проверки?
Попытался добавить это, но все жене работает
@Configuration
public class ValidatorConfig {
@Bean
public LocalValidatorFactoryBean defaultValidator() {
return new LocalValidatorFactoryBean();
}
@Bean
public MethodValidationPostProcessor methodValidationPostProcessor() {
return new MethodValidationPostProcessor();
}
}