diff --git a/jpashop/src/main/java/com/example/jpashop/controller/MemberController.java b/jpashop/src/main/java/com/example/jpashop/controller/MemberController.java new file mode 100644 index 00000000..6bb25d97 --- /dev/null +++ b/jpashop/src/main/java/com/example/jpashop/controller/MemberController.java @@ -0,0 +1,44 @@ +package com.example.jpashop.controller; + +import com.example.jpashop.domain.Address; +import com.example.jpashop.domain.Member; +import com.example.jpashop.service.MemberService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; + +import javax.validation.Valid; + +@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"; + } + + @PostMapping("/members/new") + public String create(@Valid MemberForm memberForm, BindingResult result) { + + if (result.hasErrors()) { + return "members/createMemberForm"; + } + + Address address = new Address(memberForm.getCity(), memberForm.getStreet(), memberForm.getZipcode()); + + Member member = Member.builder() + .name(memberForm.getName()) + .address(address) + .build(); + + memberService.join(member); + return "redirect:/"; + } +} diff --git a/jpashop/src/main/java/com/example/jpashop/controller/MemberForm.java b/jpashop/src/main/java/com/example/jpashop/controller/MemberForm.java new file mode 100644 index 00000000..9bd6fc1d --- /dev/null +++ b/jpashop/src/main/java/com/example/jpashop/controller/MemberForm.java @@ -0,0 +1,16 @@ +package com.example.jpashop.controller; + +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotEmpty; + +@Getter @Setter +public class MemberForm { + + @NotEmpty(message = "회원 이름은 필수 입니다.") + private String name; + private String city; + private String street; + private String zipcode; +} diff --git a/jpashop/src/main/java/com/example/jpashop/domain/Member.java b/jpashop/src/main/java/com/example/jpashop/domain/Member.java index 6be8bb0a..7776afe1 100644 --- a/jpashop/src/main/java/com/example/jpashop/domain/Member.java +++ b/jpashop/src/main/java/com/example/jpashop/domain/Member.java @@ -1,7 +1,6 @@ package com.example.jpashop.domain; -import lombok.Getter; -import lombok.Setter; +import lombok.*; import javax.persistence.*; import java.util.ArrayList; @@ -9,6 +8,9 @@ import java.util.List; @Entity @Getter @Setter +@Builder +@NoArgsConstructor +@AllArgsConstructor public class Member { @Id @GeneratedValue diff --git a/jpashop/src/main/resources/templates/members/createMemberForm.html b/jpashop/src/main/resources/templates/members/createMemberForm.html new file mode 100644 index 00000000..270e850e --- /dev/null +++ b/jpashop/src/main/resources/templates/members/createMemberForm.html @@ -0,0 +1,37 @@ + + +
+