@valid 어노테이션을 이용해서 파라미터 유효값 체크 중 List 같은 Collection은 JavaBean이 아니기때문에 @NotNull과 같은 valid체크에 걸리지 않는 문제가 있음 -> 해당 문제 Validator implements해서 수정
Webflux는 BindingResult 지원하지 않는 오류로 다른 방법으로 수정중
→ 아래 참조 2를 보면 WebExchangeBindException가 BindingResult implements 한걸로 보여서 해당 방법으로 수정해봄
WebFlux는 모델 바인딩이 별도 쓰레드에서 발생하므로 컨트롤러 파라미터로 얻을 수 없다고 합니다... onErrorXX 메소드로 수정 테스트중
→ 위 방법으로 했을때 해결됨 (ConstraintViolationException 예외 캐치됨)
@PostMapping("/")
public Mono<ResponseEntity<Integer>> insert(@Valid @RequestBody List<Vo> list) {
int result = approvalService.insert(list);
return Mono.just(new ResponseEntity<>(result, HttpStatus.OK))
.onErrorResume(
WebExchangeBindException.class
, throwable -> Mono.just(new ResponseEntity<>(null, HttpStatus.BAD_REQUEST))
);
}
SpringMVC에서 Collection의 Validation · HomoEfficio/dev-tips Wiki
[에러메세지] For @RequestBody and @RequestPart arguments, please declare them with a reactive type wrapper and use its onError operators to handle WebExchangeBindException:
WebExchangeBindException (Spring Framework 5.3.15 API)