1

次のようなコントローラーがあります。

@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

    }   
}

それから私はEventRequestpojoを持っています:

 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();
 }
}
4

1 に答える 1