Validation 예외처리

금은체리·2023년 11월 17일
0

Spring

목록 보기
22/49

회원가입 적용

  1. SignupRequestDto
package com.sparta.springauth.dto;

import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class SignupRequestDto {
    @NotBlank
    private String username;
    @NotBlank
    private String password;
    @Email
    @NotBlank
    private String email;
    private boolean admin = false;
    private String adminToken = "";
}
  1. UserController : signup에 @Valid 적용
@PostMapping("/user/signup")
public String signup(@Valid SignupRequestDto requestDto) {
    userService.signup(requestDto);

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

Validation 예외처리

  • 회원가입 진행 시 데이터 검증 시 오류가 발생했을 때 로그인 페이지가 아니라 회원가입 페이지로 이동하려면 Validation 예외를 처리해야함

  • BindingResult

    • 예외가 발생하면 BindingResult 객체에 오류에 대한 정보가 담김
    • 파라미터로 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.getFieldErrors()
      • 발생한 오류들에 대한 정보가 담긴 List<FieldError> 리스트를 가져옴
profile
전 체리 알러지가 있어요!

0개의 댓글