[오늘의 공부]
1. 스프링의 정석 - @ExceptionHandler 강의 듣고 정리
[오늘 한 일 & 알게된 것]
1. 회원가입 - Validator로 검증 후, 검증 실패 시 ajax로 에러 메세지 출력하기
@RequestBody 가 @Valid 보다 먼저 작동해서 Date 타입인 btdt를 입력받을 때, 매핑이 되지않아 InvalidFormatException 이 발생했다.
해결방법>> btdt를 String으로 바꿔주자. DB에서도 VARCHAR타입으로.
에러 메세지를 어떻게 응답할 것인가. join 메서드에서는 두 가지의 리턴값이 있다.
검증 실패 시 map에 key는 에러 코드, value는 에러 메세지를 담아 리턴.
검증 성공 시 "success_join"을 반환
해결 방법>> 검증 실패 시 예외를 발생시키자! - 그래서 UserValidatorException이란 예외 클래스를 만들고, 거기에 BindingResult를 담는다.
예외가 발생하면 @ExceptionHandler로 던져주고, 거기서 {"필드 이름": "에러메세지"}를 담은 Map을 응답한다.
public class UserValidatorException extends Exception{
private Map error_msg = new HashMap();
public UserValidatorException(BindingResult result, String msg){
super(msg);
for (FieldError fieldError : result.getFieldErrors()) {
error_msg.put(fieldError.getField(),fieldError.getDefaultMessage());
}
}
public Map getError_msg() {
return error_msg;
}
}
@ExceptionHandler(UserValidatorException.class)
@ResponseBody
public Map catcher1(UserValidatorException ve) {
//{"필드이름" : "에러 메세지",...}
return ve.getError_msg();
}
'프로젝트' 카테고리의 다른 글
[도파민 프로젝트] 개발일지 220821 (0) | 2022.08.21 |
---|---|
[도파민 프로젝트] 220820 개발일지 (0) | 2022.08.20 |
[도파민 프로젝트] 개발일지 220817 (0) | 2022.08.17 |
[220809] 데이터 모델링 이슈 정리 (0) | 2022.08.10 |
[도파민 프로젝트] 주제 선정 및 UI 목업 (0) | 2022.08.08 |
댓글