Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
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
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

BindingResult2 본문

인프런/[인프런] 스프링 MVC 2

BindingResult2

Seung__ 2021. 9. 24. 18:52

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]

 

 

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