Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- db
- AOP
- Servlet
- JDBC
- Greedy
- transaction
- Thymeleaf
- Spring Boot
- SpringBoot
- 스프링 핵심 원리
- 백준
- 스프링
- JPQL
- 인프런
- spring
- pointcut
- Android
- QueryDSL
- 그리디
- http
- springdatajpa
- 스프링 핵심 기능
- Exception
- kotlin
- 김영한
- jpa
- Proxy
- java
- 자바
- 알고리즘
Archives
- Today
- Total
개발자되기 프로젝트
회원 등록 본문
1. memberForm
- 회원 가입에서 넘어오는 회원 데이터
- Entity와 분리
- @NotEmpty를 통한 validation가능. empty일 경우 스프링이 error띄움.
@Getter @Setter
public class MemberForm {
@NotEmpty(message = "회원 이름은 필수입니다.")
private String name;
private String city;
private String street;
private String zipcode;
}
2. MemberController
- createForm
- @GetMapping
- 해당 Get method로 해당 url 접근하면 회원가입 화면으로 이동.
- 빈 MemberForm들고감. --> validation에 활용.
@Controller
@RequiredArgsConstructor
public class MemberController {
private final MemberService memberService;
@GetMapping("/members/new")
public String createForm(Model model){
//빈 객체 들고감.
model.addAttribute("memberForm", new MemberForm());
return "members/createMemberForm";
}
- create
- @PostMapping
- 회원 가입 화면에서 전달받은 MemberForm을 받음.
- 전달 받은 회원 정보를 가지고 Member 생성
- 정상적으로 회원가입 완료 시 "redirect:/" 홈 화면으로 이동
- @Valid MemberForm memberForm
MemberForm의 name 필드에 @NotEmpty 적용함
@Valid 적용하면 해당 항목 검증 가능. empty시 에러 발생.
- BindingResult 을 사용하면 Validation 결과를 활용할 수 있음.
Valiation으로 인한 에러 발생시 튕기는 것이 아니라 validation결과를 가지고
코드 실행 가능.
- name 필드 empty 시 회원 가입 화면으로 돌아감.
@PostMapping("/members/new")
public String create(@Valid MemberForm memberForm, BindingResult result){
//@valid 사용하면 Form의 validtaion관련 항목 검증함.
if(result.hasErrors()){
return "members/createMemberForm";
}
Address address = new Address(memberForm.getCity(), memberForm.getStreet(), memberForm.getZipcode());
Member member = new Member();
member.setName(memberForm.getName());
member.setAddress(address);
memberService.join(member);
return "redirect:/"; //첫번째 페이지로 넘어감
}
}
- 이 때 validtaion 내용을 타임리프를 통해 띄워줄 수 있음.
<input type="text" th:field="*{name}" class="form-control"
placeholder="이름을 입력하세요"
th:class="${#fields.hasErrors('name')}? 'form-controlfieldError' : 'form-control'">
<p th:if="${#fields.hasErrors('name')}"
3. 실행 결과
- 회원 가입(정상)
insert into member (city, street, zipcode, name, member_id) values (?, ?, ?, ?, ?)
insert into member (city, street, zipcode, name, member_id) values ('dd', 'ss', '1123', 'dd', 1);
- name 필드가 empty 면??? : BindingResult 미사용
- name 필드가 empty 면??? : BindingResult 사용
4. GitHub : 210806 Member Join
'인프런 > [인프런] Springboot와 JPA활용 1' 카테고리의 다른 글
상품 등록, 상품 목록, 상품 수정 (0) | 2021.08.06 |
---|---|
회원 목록 조회 (0) | 2021.08.06 |
[웹 계층] 홈 화면과 레이아웃 (0) | 2021.08.06 |
주문 검색기능 개발 (0) | 2021.08.06 |
주문 기능 테스트 (0) | 2021.08.06 |
Comments