일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- SWEA
- python
- java
- SECS/GEM
- MYSQL
- SW Expert Academy
- Spring JPA
- SECS
- 프로그래머스
- SECS-II
- 회원가입
- CS
- 스포티파이
- modern c++
- spotify
- regression
- Baekjoon
- 파이썬
- Computer Science
- spring boot
- Spotify Api
- C++
- Spring
- 회귀
- linux
- 백준
- Gem
- c
- programmers
- 자바
Archives
- Today
- Total
비버놀로지
[Spring JPA] 1-5. 회원 가입 폼 서브밋 검증 본문
728x90
먼저, sign-up.html에서 회원가입을 하게 되면 post 방식으로 데이터를 전송하는데 이 데이터를 받기위한 controlller를 제작해 줍니다.
@PostMapping("/sign-up")
public String signUpSubmit(@Valid SignUpForm signUpForm, Errors errors) {
if(errors.hasErrors()) {
return "account/sign-up";
}
return "redirect:/index.html";
}
그리고 서브및 검증을 위해서 Validator을 작성해 줍니다.
package com.studyolle.account.controller;
import org.springframework.stereotype.Component;
import org.springframework.validation.Errors;
import org.springframework.validation.Validator;
import com.studyolle.repository.AcoountRepository;
import com.studyolle.repository.dto.SignUpForm;
import lombok.RequiredArgsConstructor;
@Component
@RequiredArgsConstructor //final 인 생성자를 자동으로 만들어 준다.
public class SignUpFormValidator implements Validator{
private final AcoountRepository accountRopository;
@Override
public boolean supports(Class<?> aClass) {
return aClass.isAssignableFrom(SignUpForm.class);
}
@Override
public void validate(Object o, Errors errors) {
SignUpForm signUpForm=(SignUpForm)errors;
if(accountRopository.existsByEmail(signUpForm.getEmail())) {
errors.rejectValue("email","invalid.email",new Object[] {signUpForm.getEmail()},"이미 사용중인 이메일입니다.");
}
if(accountRopository.existsByNickname(signUpForm.getNickname())) {
errors.rejectValue("nickname","invalid.nickname",new Object[] {signUpForm.getEmail()},"이미 사용중인 닉네임입니다.");
}
}
}
위와 같이 이메일과 닉네임이 중복되는 것을 체크해 주는 validator를 작성해 줍니다.
package com.studyolle.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.transaction.annotation.Transactional;
import com.studyolle.repository.dto.Account;
@Transactional(readOnly = true)
public interface AcoountRepository extends JpaRepository<Account, Long>{
boolean existsByNickname(String nickname);
boolean existsByEmail(String email);
}
ropository에 존재를 확인해 주어야 하는데 spring에서 제공해 주는 Repository를 사용해서 DB에 중복 되는게 있는지 확인해 줄 수 있도록 작성해 준다.
728x90
'LANGUAGE STUDY > Spring' 카테고리의 다른 글
[Spring JPA] 1-7. 회원 가입 리펙토링 및 테스트 (0) | 2021.04.30 |
---|---|
[Spring JPA] 1-6. 회원 가입 폼 서브밋 처리 (0) | 2021.04.30 |
[Spring JPA] 1-4. 회원 가입 : 뷰 (0) | 2021.04.30 |
[Spring JPA] 1-3. 회원 가입 : 컨트롤러 (0) | 2021.04.27 |
[Spring JPA] 1-2. 계정 도메인 (0) | 2021.04.27 |
Comments