Spring Boot JPA 프로젝트를 진행하면서 게시판 등록 시 유효성 검사를 하기 위해 @Valid를 사용했다.
이 과정에서 BindingResult를 매개변수로 받아서 에러가 있는지 없는지 확인했는데 무엇인지 정리해보겠다!
먼저 사용한 코드부터 보자면,
@PostMapping("/create")
public String create(@Valid BoardForm boardForm,
BindingResult bindingResult) {
if(bindingResult.hasErrors()) {
return "board/create"; // 현재 html에 그대로 머무르기
}
this.boardService.setBoard(boardForm.getTitle(), boardForm.getContent());
return "redirect:/board/list";
}
- bindingResult.hasErrors()를 통해 bindingResult에 오류가 담겼는지 여부에 따라 로직을 나눴다.
그래서
BindingResult가 뭔데❓
BindingResult란?
- BindingResult는 스프링이 제공하는 검증 오류 처리 방법의 핵심으로, 스프링이 제공하는 검증 오류를 보관하는 객체
- 검증 오류가 발생하면 BindingResult 객체에 보관하면 된다.
BindingResult 를 사용하면
@ModelAttribute에 데이터 바인딩 오류가 발생했을 때 BindingResult에 오류가 담기게 되고 Controller가 정상 호출된다.
BindingResult가 없으면
400 에러가 발생하고, Controller는 호출되지 않으며 동시에 Error Page로 이동하게 된다.
BindingResult 메소드 사용 방식
boolean hasErrors() : 에러의 유무를 판단한다.
boolean hasGlobalErrors() : 글로벌 에러의 유무를 판단한다.
void addError(ObjectError error) : field, type, value 등의 에러를 출력할 수 있다.
void rejectValue() : field, errorCode, defaultMessage 등을 받아서 reject 됐을 때 데이터를 남길 수 있다.
'Spring Boot > STUDY' 카테고리의 다른 글
[Spring Boot] JPA 프로젝트 - 페이징 기능 구현 (0) | 2024.06.20 |
---|---|
[Spring Boot] JPA 프로젝트 - @Test를 통해 게시판 데이터 등록 (0) | 2024.06.19 |
[Spring Boot] @Valid을 통한 게시글 등록 유효성 검사 (1) | 2024.06.19 |
[Spring Boot] JPA 프로젝트 - Thymeleaf로 레이아웃 템플릿 생성 (0) | 2024.06.19 |
[Spring Boot] Spring Boot JPA 프로젝트 테스트 및 오류 해결 (0) | 2024.06.18 |