我有一个控制器,如下所示:
@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
}
在我的控制器中,我有两种类型的验证,即在 EventRequest 类InitBinder
中使用的 java bean 验证 (JSR-303) 。@NotNull
问题是,如果我BindingResult result
在控制器中,@NotNull
注释将不起作用。甚至课堂上的级联验证Event
也不起作用。
为什么会这样,我怎样才能同时拥有两种类型的验证?
试图添加这个但仍然无法正常工作
@Configuration
public class ValidatorConfig {
@Bean
public LocalValidatorFactoryBean defaultValidator() {
return new LocalValidatorFactoryBean();
}
@Bean
public MethodValidationPostProcessor methodValidationPostProcessor() {
return new MethodValidationPostProcessor();
}
}