Spring Bootで画面へ設定した入力を他の画面へ渡す
一般的画面遷移
入力→確認
入力画面を設定して、確認画面で内容を表示する
画面構成
/の場合のページ
<!DOCTYPE HTML> <html xmlns:th="http://www.thymeleaf.org"> <head> <title>Spring Sample Demo</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> <h1>Spring Sample</h1> <div> Spring Sample Test </div> <p>Now <span th:text="${now}"></span></p> <br /> <form method="post" action="formPost"> <span>name: </span> <input type="text" name="name" value="" /> <br /> <span>age: </span> <input type="text" name="age" value="" /> <br /> <input type="submit" value="send" /> </form> </body> </html>
/formPostの場合のページ
<!DOCTYPE HTML> <html xmlns:th="http://www.thymeleaf.org"> <head> <title>Spring Sample Demo</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> <h1>Spring Sample</h1> <div> Post Data </div> <br /> <form method="post" action="formPost"> <span>name: </span> <span th:text="${name}"></span> <br /> <span>age: </span> <span th:text="${age}"></span> <br /> </form> </body> </html>
コントローラー実装
package com.example; import java.util.Date; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.ModelAndView; @Controller public class HelloController { @RequestMapping(value = {"/"}, method = {RequestMethod.GET}) public ModelAndView index() { // 生成 ModelAndView mv = new ModelAndView(); // テンプレートを指定 mv.setViewName("index"); // 日時を取得、設定 mv.addObject("now", new Date().toString()); // 返却 return mv; } // POST用のパラメータを受け取る @RequestMapping(value = {"/formPost"}, method = {RequestMethod.POST}) public ModelAndView postTest1( @RequestParam(value="name", required = true) String name, @RequestParam(value="age", required = true) String age) { // 生成 ModelAndView mv = new ModelAndView(); // テンプレートを指定 mv.setViewName("test1/post"); // modelに設定して画面に表示するようにする mv.addObject("name", name); mv.addObject("age", age); // 返却 return mv; } // GET用のパラメータを受け取る @RequestMapping(value = {"/formPost"}, method = {RequestMethod.GET}) public ModelAndView getTest1( @RequestParam(value="name", required = true) String name, @RequestParam(value="age", required = true) String age) { // 生成 ModelAndView mv = new ModelAndView(); // テンプレートを指定 mv.setViewName("test1/post"); // modelに設定して画面に表示するようにする mv.addObject("name", name); mv.addObject("age", age); // 返却 return mv; } }
実行
↓
GETパラメータ指定でも動く
参考
Spring Boot触ってみる その2 ーController,テンプレートエンジン(Thymeleaf)ー - endokのブログ
Spring MVC 4.0 No. 005 GETパラメータを受け取る - コンピュータクワガタ
うーん、ModelとModelAndViewの使い方はなんとなくわかったけど使い分けはわからない…
とりあえず、ModelAndViewを使っていこう…