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으로 리다이렉트
'Spring' 카테고리의 다른 글
[TIL] 240408 RestTemplate | NaverOpenApi 검색 (0) | 2024.04.08 |
---|---|
[TIL] 240407 SpringSecurity (0) | 2024.04.07 |
[TIL] 240402 SpringSecurityConfig (0) | 2024.04.03 |
[TIL] 240401 JWT토큰 (0) | 2024.04.03 |
[TIL] 240328 Spring Data JPA , JpaAuditing, Query Method (0) | 2024.03.28 |