───────┬────────────────────────────────────────────────────────────────────────
       File: src/main//java/jp/ac/kobe_u/cs/itspecialist/todoapp/controller/MemberController.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    import org.springframework.web.bind.annotation.RequestMapping;
  15    
  16    import jp.ac.kobe_u.cs.itspecialist.todoapp.dto.MemberForm;
  17    import jp.ac.kobe_u.cs.itspecialist.todoapp.entity.Member;
  18    import jp.ac.kobe_u.cs.itspecialist.todoapp.service.MemberService;
  19    
  20    @Controller
  21    @RequestMapping("/admin")
  22    public class MemberController {
  23        @Autowired
  24        MemberService mService;
  25    
  26        /**
  27         * 管理者用・ユーザ登録ページ HTTP-GET /admin/register
  28         * 
  29         * @param model
  30         * @return
  31         */
  32        @GetMapping("/register")
  33        String showUserForm(@ModelAttribute(name = "MemberForm") MemberForm form, Model model) {
  34            List<Member> members = mService.getAllMembers();
  35            model.addAttribute("members", members);
  36            model.addAttribute("MemberForm", form);
  37    
  38            return "register";
  39        }
  40    
  41        /**
  42         * 管理者用・ユーザ登録確認ページを表示 HTTP-POST /admin/check
  43         * 
  44         * @param form
  45         * @param model
  46         * @return
  47         */
  48        @PostMapping("/check")
  49        String checkUserForm(@Validated @ModelAttribute(name = "MemberForm") MemberForm form, 
  50                BindingResult bindingResult, Model model) {
  51            // 入力チェックに引っかかった場合、ユーザー登録画面に戻る
  52            if (bindingResult.hasErrors()) {
  53                // GETリクエスト用のメソッドを呼び出して、ユーザー登録画面に戻る
  54                return showUserForm(form, model);
  55            }
  56    
  57            model.addAttribute("MemberForm", form);
  58    
  59            return "check";
  60        }
  61    
  62        /**
  63         * 管理者用・ユーザ登録処理 -> 完了ページ HTTP-POST /admin/register
  64         * 
  65         * @param form
  66         * @param model
  67         * @return
  68         */
  69        @PostMapping("/register")
  70        String createUser(@Validated @ModelAttribute(name = "MemberForm") MemberForm form, 
  71            BindingResult bindingResult, Model model)  {
  72            // 入力チェックに引っかかった場合、ユーザー登録画面に戻る
  73            if (bindingResult.hasErrors()) {
  74                // GETリクエスト用のメソッドを呼び出して、ユーザー登録画面に戻る
  75                return showUserForm(form, model);
  76            }
  77    
  78            Member m = mService.createMember(form);
  79            model.addAttribute("MemberForm", m);
  80    
  81            return "registered";
  82        }
  83    
  84        @GetMapping("/delete/{mid}")
  85        String deleteUser(@PathVariable String mid, Model model) {
  86            mService.deleteMember(mid);
  87            return "redirect:/admin/register";
  88        }
  89    
  90    }
───────┴────────────────────────────────────────────────────────────────────────