스프링 프레임워크로 사용자 회원가입과 로그인을 컨트롤할 controller 코드중에서 사용한 주요 메소드를 간략히 정리했다.
@PostMapping("/signup") // Post: 회원가입 진행
public String signup(@Valid UserCreateForm userCreateForm, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return "signup_form";
}
if (!userCreateForm.getPassword1().equals(userCreateForm.getPassword2())) {
bindingResult.rejectValue("password2", "passwordInCorrect",
"📌패스워드가 일치하지 않습니다.");
return "signup_form";
}
//중복 확인
try {
userService.create(userCreateForm.getUsername(),
userCreateForm.getEmail(), userCreateForm.getPassword1());
}
catch (DataIntegrityViolationException e){
e.printStackTrace();
bindingResult.reject("signupFailed","이미 등록된 사용자입니다.");
return "signup_form";
}
catch (Exception e){
e.printStackTrace();
bindingResult.reject("signupFailed",e.getMessage());
return "signup_form";
}
return "redirect:/";
}
BindingResult
검증오류를 보관하는 객체이다. 매개변수에서 자신이 검증할 객체 바로 다음에 위치해야한다.
@Valid UserCreateForm userCreateForm, BindingResult bindingResult
필드 오류 처리를 단순화 하는
rejectValue rejectValue(필드명, 오류코드, 에러메시지)
를 사용한다.
if (!userCreateForm.getPassword1().equals(userCreateForm.getPassword2())) {
bindingResult.rejectValue("password2", "passwordInCorrect",
"📌패스워드가 일치하지 않습니다.");
return "signup_form";
}
패스워드1과 패스워드2가 일치하지않으면
패스워드2 (필드명)에 passwordInCorrect (오류코드) 를 삽입하고 에러메시지 "패스워드가 일치하지않습니다" 하고 돌려준다.
html에서는 이 오류 메세지를 어떻게 처리하냐면
공통으로 사용할 form_errors.html를 만들어주고
<div th:fragment="formErrorsFragment" class="alert alert-danger"
role="alert" th:if="${#fields.hasAnyErrors()}" xmlns:th="http://www.w3.org/1999/xhtml">
<div th:each="err : ${#fields.allErrors()}" th:text="${err}" />
</div>
해당 html들에
<div th:replace="form_errors :: formErrorsFragment"></div>
를 삽입해주면된다.
728x90
'Spring > Spring boot' 카테고리의 다른 글
java: constructor () is already defined in class lombok 오류 해결 (0) | 2022.11.02 |
---|---|
Spring Security H2 데이터 베이스 사용시 프레임 오류 (0) | 2022.10.27 |
페이징 구현하기 (0) | 2022.10.27 |
Spring Boot Validation // null로 등록 불가능하게 하는 방법 (0) | 2022.10.27 |
MAC m1 H2 Databases 설치 방법 (0) | 2022.10.26 |
댓글