@Valid
, @Validated
는 HttpMessageConverter(@RequestBody)
에도 적용할 수 있다.
현재 타입을 String으로 바꾸니 컨트롤러에도 못들어가는 것을 확인할 수 있다. 그 이유는 ItemSaveForm
객체를 만들지 못했기 때문에다.
이 경우는 컨트롤러 호출은 되었고, 검증에 실패해서 나온 오류이다.
API의 경우 3가지가 있다.
이 3가지가 위에 있는 예시이다.
@ModelAttribute vs @RequestBody
@ModelAttribute
의 경우 각각의 필드 단위로 세밀하게 적용되기 때문에 타입이 달라도 컨트롤러에서 검증 오류 처리를 할 수 있다.
하지만, @RequestBody
의 경우 객체 전체를 한 덩어리로 보기 때문에 필드 중간에 타입이 맞지 않아 JSON 데이터를 객체로 변경하지 못하면 컨트롤러 진행 자체가 되지 않고 예외가 발생한다.