Engineering Note

[Spring] BindingResult 본문

Server

[Spring] BindingResult

Software Engineer Kim 2025. 9. 22. 19:08

BindingResult

- 스프링 프레임워크에서 데이터바인딩과 검증결과를 담는 인터페이스

 

 

주요 역할

1. 데이터 바인딩 오류 수집

- HTTP 요청 데이터를 객체로 변환할 때 발생하는 오류들을 수집

2. 검증(Validation) 결과 저장

- @Valid 어노테이션으로 수행된 검증 결과를 저장

 

 

 

사용 방법

@PostMapping("/cart")
public ResponseEntity<?> addCart(
    @RequestBody @Valid CartItemDto cartItemDto, 
    BindingResult bindingResult) {
    
    if (bindingResult.hasErrors()) {
        Map<String, String> errors = new HashMap<>();
        
        bindingResult.getFieldErrors().forEach(error -> {
            errors.put(error.getField(), error.getDefaultMessage());
        });
        
        return ResponseEntity.badRequest().body(errors);
        // 예: {"itemId": "상품 아이디는 필수 입력값입니다.", "count": "최소 1개 이상 담아주세요"}
    }
    
    // 정상 처리
    return ResponseEntity.ok("장바구니에 추가되었습니다.");
}

 

 

주의 할 점

- BindingResult는 검증할 객체 바로 다음에 위치해야 한다.

// 올바른 순서
public String method(@Valid CartItemDto dto, BindingResult result) { }

// 잘못된 순서 - 오류 발생
public String method(@Valid CartItemDto dto, Principal principal, BindingResult result) { }
Comments