이전 글로 Validation 검증이란? 에 대해 알아봤습니다.
Validation 검증 - 검증이란?
Validation을 하는 이유 폼 입력 시 검증 오류가 발생하면 오류 화면으로 바로 이동하게 됩니다. 이렇게 되면 사용자는 해당 폼으로 이동하여, 처음부터 다시 입력을 해야 합니다. Controller의 중요한
hhhhicode.tistory.com
이번 글로 BindingResult에 대해 알아봅시다.
BindingResult 란?
- BindingResult는 스프링이 제공하는 검증 오류 처리 방법의 핵심입니다.
- BindingResult는 스프링이 제공하는 검증 오류를 보관하는 객체입니다.
- 검증 오류가 발생하면 BindingResult 객체에 보관하면 됩니다.
BindingResult가 있으면
@ModelAttribute에 데이터 바인딩 오류가 발생했을 때
BindingResult에 오류 정보가 담기게 되고 Controller가 정상 호출됩니다.
BindingResult가 없으면
400 오류가 발생하게 되고
Controller가 호출되지 않으며
Error Page로 이동하게 됩니다.
BindingResult 적용 시 Controller가 무사히 호출되는 이유
ArgumentResolver
- HandlerAdapter → ArgumentResolver → Handler
ArgumentResolver가 호출되면서 파라미터가 바인딩됩니다.
이때 Validation이 적용되며,
바인딩 실패 시 BindingResult에 마치 try-catch가 작동하는 것처럼, 오류 정보가 담기게 됩니다.
그러므로 ArgumentResolver가 무사히 적용되고 Controller가 호출되는 것입니다.
@ModelAttribute
@ModelAttribute는 필드 하나하나에 대한 바인딩됩니다.
바인딩 오류가 발생하는 필드를 제외한 다른 필드는 제대로 바인딩되고
이어서 Controller까지 호출이 됩니다.
또한 이때 상황에 따라 HttpMessageResolver도 호출되게 됩니다. HttpMessageResolver에도 Validation이 적용되지만,
HttpMessageResolver는 @ModelAttribute처럼 필드 하나하나 바인딩되는 구조가 아닙니다.
그렇기 때문에 바인딩 실패 시 Exception이 발생하게 되고, 이는 Exception 처리가 필요합니다.
해당 부분은 추후에 포스팅합니다.
다음으로 Validation 오류를 담는 객체인 BindingResult의 사용에 대해 알아봅시다.
Validation 검증 - BindingResult 사용
BindingResult 사용 BindingResult가 사용되는 위치 FieldError ObjectError BindingResult에 검증 오류를 담는 3가지 방법 을 다룹니다. BindingResult가 사용되는 위치 BindingResult는 @ModelAttribute의 객체 다음에 와야 합
hhhhicode.tistory.com
'Spring MVC > Validation' 카테고리의 다른 글
Validation 검증 - Bean Validation의 글로벌 Validation 오류 (2) | 2022.12.08 |
---|---|
Validation 검증 - Bean Validation과 Spring MVC (1) | 2022.12.06 |
Validation 검증 - Bean Validation 이란? (1) | 2022.12.06 |
Validation 검증 - Validator를 사용하는 2가지 방법 (2) | 2022.12.05 |
Validation 검증 - Validator 이해와 MyValidator 만들어보기 (1) | 2022.12.04 |
Validation 검증 - 사용자 입력 보존과 오류 메시지 남기기 (1) | 2022.12.03 |
Validation 검증 - BindingResult 사용 (1) | 2022.12.02 |
Validation 검증 - 검증이란? (0) | 2022.12.01 |
댓글