次のようなコントローラーがあります。
@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
で使用する 2 種類の検証、および Java Bean 検証 (JSR-303) があります。@NotNull
問題は、BindingResult result
コントローラーにある場合、@NotNull
注釈が機能しないことです。また、クラスのカスケード検証も機能しEvent
ていません。
それはなぜですか、どうすれば2種類の検証を両方持つことができますか?
これを追加しようとしましたが、まだ機能していません
@Configuration
public class ValidatorConfig {
@Bean
public LocalValidatorFactoryBean defaultValidator() {
return new LocalValidatorFactoryBean();
}
@Bean
public MethodValidationPostProcessor methodValidationPostProcessor() {
return new MethodValidationPostProcessor();
}
}