───────┬──────────────────────────────────────────────────────────────────────── │ File: src/main//java/jp/ac/kobe_u/cs/itspecialist/todoapp/controller/ToDoController.java ───────┼──────────────────────────────────────────────────────────────────────── 1 │ package jp.ac.kobe_u.cs.itspecialist.todoapp.controller; 2 │ 3 │ import java.util.List; 4 │ 5 │ import org.springframework.beans.factory.annotation.Autowired; 6 │ import org.springframework.stereotype.Controller; 7 │ import org.springframework.ui.Model; 8 │ import org.springframework.validation.BindingResult; 9 │ import org.springframework.validation.annotation.Validated; 10 │ import org.springframework.web.bind.annotation.GetMapping; 11 │ import org.springframework.web.bind.annotation.ModelAttribute; 12 │ import org.springframework.web.bind.annotation.PathVariable; 13 │ import org.springframework.web.bind.annotation.PostMapping; 14 │ 15 │ import jp.ac.kobe_u.cs.itspecialist.todoapp.dto.LoginForm; 16 │ import jp.ac.kobe_u.cs.itspecialist.todoapp.dto.ToDoForm; 17 │ import jp.ac.kobe_u.cs.itspecialist.todoapp.entity.Member; 18 │ import jp.ac.kobe_u.cs.itspecialist.todoapp.entity.ToDo; 19 │ import jp.ac.kobe_u.cs.itspecialist.todoapp.service.MemberService; 20 │ import jp.ac.kobe_u.cs.itspecialist.todoapp.service.ToDoService; 21 │ 22 │ @Controller 23 │ public class ToDoController { 24 │ @Autowired 25 │ MemberService mService; 26 │ @Autowired 27 │ ToDoService tService; 28 │ 29 │ /** 30 │ * トップページ 31 │ */ 32 │ @GetMapping("/") 33 │ String showIndex(@ModelAttribute(name = "loginForm") LoginForm loginForm, Model model) { 34 │ //model.addAttribute("loginForm", loginForm); 35 │ return "index"; 36 │ } 37 │ 38 │ /** 39 │ * ログイン処理.midの存在確認をして,ユーザページにリダイレクト 40 │ */ 41 │ @PostMapping("/login") 42 │ String login(@Validated @ModelAttribute(name = "loginForm") LoginForm loginForm, BindingResult bindingResult, 43 │ Model model) { 44 │ 45 │ if (bindingResult.hasErrors()) { // バリデーション 46 │ return showIndex(loginForm, model); 47 │ } 48 │ 49 │ Member m = mService.getMember(loginForm.getMid()); // 存在チェック 50 │ return "redirect:/" + m.getMid() + "/todos"; 51 │ } 52 │ 53 │ /** 54 │ * ユーザのToDoリストのページ 55 │ */ 56 │ @GetMapping("/{mid}/todos") 57 │ String showToDoList(@PathVariable String mid, @ModelAttribute(name = "ToDoForm") ToDoForm form, Model model) { 58 │ Member m = mService.getMember(mid); 59 │ model.addAttribute("member", m); 60 │ model.addAttribute("ToDoForm", form); 61 │ List<ToDo> todos = tService.getToDoList(mid); 62 │ model.addAttribute("todos", todos); 63 │ List<ToDo> dones = tService.getDoneList(mid); 64 │ model.addAttribute("dones", dones); 65 │ return "list"; 66 │ } 67 │ 68 │ /** 69 │ * 全員のToDoリストのページ 70 │ */ 71 │ @GetMapping("/{mid}/todos/all") 72 │ String showAllToDoList(@PathVariable String mid, Model model) { 73 │ Member m = mService.getMember(mid); 74 │ model.addAttribute("member", m); 75 │ List<ToDo> todos = tService.getToDoList(); 76 │ model.addAttribute("todos", todos); 77 │ List<ToDo> dones = tService.getDoneList(); 78 │ model.addAttribute("dones", dones); 79 │ return "alllist"; 80 │ } 81 │ 82 │ /** 83 │ * ToDoの作成.作成処理後,ユーザページへリダイレクト 84 │ */ 85 │ @PostMapping("/{mid}/todos") 86 │ String createToDo(@PathVariable String mid, @Validated @ModelAttribute(name = "ToDoForm") ToDoForm form, 87 │ BindingResult bindingResult, Model model) { 88 │ if (bindingResult.hasErrors()) { 89 │ return showToDoList(mid, form, model); 90 │ } 91 │ tService.createToDo(mid, form); 92 │ return "redirect:/" + mid + "/todos"; 93 │ } 94 │ 95 │ /** 96 │ * ToDoの完了.完了処理後,ユーザページへリダイレクト 97 │ */ 98 │ @GetMapping("/{mid}/todos/{seq}/done") 99 │ String doneToDo(@PathVariable String mid, @PathVariable Long seq, Model model) { 100 │ tService.done(mid, seq); 101 │ return "redirect:/" + mid + "/todos"; 102 │ } 103 │ } ───────┴────────────────────────────────────────────────────────────────────────