Search

[스프링 게시판] 오류 코드 설정

@3/21/2023

errors.properties 생성

duplicate.userForm.name=이미 존재하는 이름입니다. duplicate.userForm.email=이미 가입된 이메일입니다. duplicate.userForm.loginId=이미 존재하는 아이디입니다. required=값을 입력하세요.
Java
복사

스프링 설정 추가

spring: ... messages: basename: messages,errors
YAML
복사

컨트롤러

@PostMapping("/new") public String signup( @Validated @ModelAttribute UserForm userForm, BindingResult bindingResult ) { if (!userService.isUsableLoginId(userForm.getLoginId())) { bindingResult.rejectValue("loginId", "duplicate", "이미 사용 중인 아이디입니다."); } if (!userService.isUsableEmail(userForm.getEmail())) { bindingResult.rejectValue("email", "duplicate", "이미 사용 중인 이메일입니다."); } if (!userService.isUsableName(userForm.getName())) { bindingResult.rejectValue("name", "duplicate", "이미 사용 중인 닉네임입니다."); } if (bindingResult.hasErrors()) { return "users/userForm"; } userService.join(userForm); return "redirect:/"; }
Java
복사

결과 화면

스프링 기본 메시지(공백일 수 없습니다) 설정 - bindingResults를 로그로 찍어보니 메시지 코드가 NotBlank인 것을 알 수 있었음
Field error in object 'userForm' on field 'loginId': rejected value [admin]; codes [duplicate.userForm.loginId,duplicate.loginId,duplicate.java.lang.String,duplicate]; arguments []; default message [이미 사용 중인 아이디입니다.]
Java
복사
인코딩 문제가 있어보임
Editor > File Encodings에서 properties files 인코딩 설정을 UTF-8로 변경

결과 화면