본문 바로가기
Spring

[TIL] 240405 Bean Validation

by studymode 2024. 4. 5.

 

Bean Validation

@NotNull

@NotBlank

@Email 등

 

 

dto 예시

@Getter
public class ProductRequestDto {
    @NotBlank
    private String name;
    @Email
    private String email;
    @Positive(message = "양수만 가능합니다.")
    private int price;
    @Negative(message = "음수만 가능합니다.")
    private int discount;
    @Size(min=2, max=10)
    private String link;
    @Max(10)
    private int max;
    @Min(2)
    private int min;
}

 

 

 

@Valid

Bean Validation을 받아오는 곳에 @Valid 애너테이션으로 확인

@PostMapping("/validation")
@ResponseBody
public ProductRequestDto testValid(@RequestBody @Valid ProductRequestDto requestDto) {
    return requestDto;
}

 

 

 

Validation 예외처리

데이터 검증 시 오류가 발생하면 특정 페이지로 redirect하도록 처리

BindingResult객체에 오류 정보 담도록 설정

@PostMapping("/user/signup")
public String signup(@Valid SignupRequestDto requestDto, BindingResult bindingResult) {
    // Validation 예외처리
    List<FieldError> fieldErrors = bindingResult.getFieldErrors();
    if(fieldErrors.size() > 0) {
        for (FieldError fieldError : bindingResult.getFieldErrors()) {
            log.error(fieldError.getField() + " 필드 : " + fieldError.getDefaultMessage());
        }
        return "redirect:/api/user/signup";
    }

    userService.signup(requestDto);

    return "redirect:/api/user/login-page";
}

BindingResult의 에러를 fieldError 리스트로 가져와서, 사이즈가 0보다 크면 (에러가 존재하면)

api/user/signup으로 리다이렉트