본문 바로가기
[JAVA]/JAVA 기본

BindingResult에 대해 간단히 알아보기

by 황원용 2023. 6. 13.
728x90

BindingResult

  • 클라이언트로부터 전달받은 사용자의 입력 데이터에 대한 유효성 검사를 용이하게 하기 위해 Spring에서 제공하는 기능이다.
  • 검증 오류가 발생하면 그 오류 내용을 보관하는 역할을 하는 객체이다.
  • 입력 데이터의 유효성 검사에 실패하면 ConstraintViolationException이 발생되고 이때 에러 정보를 BindingResult에 저장하게 된다.

 

 

BindingResult 의 사용 예시

@PostMapping("/register")
public String registerUser(@ModelAttribute("user") @Valid User user, BindingResult bindingResult) {
	
    if (bindingResult.hasErrors()) {
        // Handle validation errors
        return "registration-form";
    }

    // Process successful form submission
    userService.registerUser(user);
    return "redirect:/success";
}

 

 

BindingResult  객체에 검증 오류 내용을 저장하는 방법 3 가지

1. @ModelAttribute 사용

  • @ModelAttribute는 HTTP 파라미터를 객체로 매핑해 준다.
  • @ModelAttribute의 파라미터로 받은 데이터가 검증 오류로 바인딩에 실패하면 스프링이 자동으로 FieldError를 만들고 BindingResult에 저장한다.

 

2. @Valid, @Validated 사용

  • 객체에 대한 유효성 검사를 수행하고 BindingResult에 유효성 검사 오류를 수집하도록 지시한다.

 

3. new FieldError 사용

  • new FieldError로 객체를 생성하여 개발자가 수동으로 저장한다. 

 

 

BindingReult 인터페이스가 제공하는 메서드

hasErrors()

  • 유효성 검사 오류가 있는지 여부를 나타내는 boolean 값을 반환한다.

getAllErrors()

  • 바인딩 프로세스 중에 발생한 모든 유효성 검사 오류를 나타내는 ObjectError 및 FieldError 인스턴스 목록을 반환한다.

getFieldErrors()

  • 특정 양식 필드와 관련된 유효성 검사 오류를 나타내는 FieldError 인스턴스 목록을 반환한다.

getGlobalErrors()

  • 특정 양식 필드와 연결되지 않은 전역 유효성 검사 오류를 나타내는 ObjectError 인스턴스 목록을 반환한다.

addError()

  • BindingResult에 수동으로 오류를 추가한다.

 

 

BindingResult가 중요한 이유

유효성 검사 수행

  • 클라이언트가 보낸 데이터에 유효성 검사 규칙을 적용함으로써 바인딩 프로세스 중에 발생하는 오류를 잡아낼 수 있다.

오류 처리 사용자 정의

  • BindingResult에서 제공하는 정보를 사용하여 사용자 컨텍스트에 대한 오류 메시지 및 응답을 조정할 수 있다.
  • 예를 들어 메시지의 출력 길이 조정, 원하는 문장만 출력하게 할 수 있다.

사용자 경험 개선

  • BindingResult를 효과적으로 활용하면 클라이언트로부터 유효하지 않은 데이터가 포함된 양식을 받을 때 그 응답값으로 잘못된 부분을 바로 알릴 수 있다.
  • 이를 통해 빠르게 수정하여 애플리케이션의 전반적인 사용자 경험을 향상시킬 수 있다.

 

 

 

참고

ChatGPT

https://tecoble.techcourse.co.kr/post/2021-05-11-requestbody-modelattribute/

https://velog.io/@mooh2jj/Spring-Boot-Validation-적용하는-법

728x90