Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- spring
- 스프링
- db
- java
- kotlin
- QueryDSL
- Servlet
- SpringBoot
- jpa
- 스프링 핵심 기능
- Greedy
- 알고리즘
- Thymeleaf
- 백준
- JDBC
- Exception
- pointcut
- 그리디
- 김영한
- JPQL
- Proxy
- Spring Boot
- http
- AOP
- 자바
- transaction
- 인프런
- springdatajpa
- Android
- 스프링 핵심 원리
Archives
- Today
- Total
개발자되기 프로젝트
BindingResult2 본문
1. BindingResult??
- 스프링이 제공하는 검증 오류를 보관하는 객체이다.
- 검증 오류가 발생하면 여기에 보관하면 된다.
- BindingResult 가 있으면 @ModelAttribute 에 데이터 바인딩 시 오류가 발생해도
컨트롤러가호출된다! - @ModelAttribute에 바인딩 시 타입 오류가 발생하면?
- BindingResult 가 없으면 400 오류가 발생하면서 컨트롤러가 호출되지 않고,
오류 페이지로이동한다. - BindingResult 가 있으면 오류 정보( FieldError )를 BindingResult 에 담아서
컨트롤러를 정상 호출한다. -
Field error in object 'item' on field 'itemName': rejected value [null]; codes []; arguments []; default message [상품 이름은 필수 입니다.] Error in object 'item': codes []; arguments []; default message [가격 * 수량은 10,000원 이상이어야 합니다. 현재 값 = 1000]
- BindingResult 가 없으면 400 오류가 발생하면서 컨트롤러가 호출되지 않고,
2. BindingResult에 검증 오류를 적용하는 방법
- @ModelAttribute 의 객체에 타입 오류 등으로 바인딩이 실패하는 경우
- 스프링이 FieldError 생성해서 BindingResult 에 넣어줌.
- 개발자가 직접 넣어준다.
- businessLogic에서 발생한 에러
- Validator 사용
- 즉, BindingResult에는 크게 두 종류의 에러가 있다.
- Binding에 실패하는 경우 발생한 에러
- 개발자가 직접 넣어주는 BusinsessLogic에서 발생하는 에러
3. 주의
- BindingResult 는 검증할 대상 바로 다음에 와야한다. 순서가 중요하다.
- 예를 들어서 @ModelAttribute Item item , 바로 다음에 BindingResult 가 와야 한다.
- BindingResult 는 Model에 자동으로 포함된다.
4. BindingResult & Errors
- org.springframework.validation.Errors
- org.springframework.validation.BindingResult
- BindingResult 는 인터페이스이고, Errors 인터페이스를 상속받고 있다.
- 실제 넘어오는 구현체는 BeanPropertyBindingResult 라는 것인데,
- 둘다 구현하고 있으므로 BindingResult 대신에 Errors 를 사용해도 된다.
- Errors 인터페이스는 단순한 오류 저장과 조회 기능을 제공한다.
- BindingResult 는 여기에 더해서 추가적인 기능들을 제공한다.
- addError() 도 BindingResult 가 제공하므로 여기서는 BindingResult 를 사용하자.
- 주로 관례상 BindingResult 를 많이 사용한다.+
5. 문제점
- 에러 발생 시 입력한 data가 없어진다 ㅋㅋ
'인프런 > [인프런] 스프링 MVC 2' 카테고리의 다른 글
오류 코드와 메시지 처리1 (0) | 2021.09.24 |
---|---|
FieldError, ObjectError (0) | 2021.09.24 |
BindingResult1 (0) | 2021.09.24 |
검증 직접 처리, validation (0) | 2021.09.24 |
검증 요구사항. (0) | 2021.09.24 |
Comments