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