こんにちは、SpringBoot、ThymeleafをつかってHTMLでつくられた固定値の入ったテーブルを表示し、
空白のカラムなどを追加してデータの変更を受付けsubmitすることによって、
変更された値をコントローラーに送り、変更を受付ない画面を改めて表示したいです。
現在変更を受け付ける画面は作成できたのですが、
POSTを受け付けるコントローラの作り方がさっぱりわからないです。
Thymeleafにてth:objectで設定した値とDTOのクラス名が結びついているから
引数でth:objectに設定した値をうければいいのでしょうか??
質問がかなりふわっとしていて申し訳ありません。
以下にコードを記載します
java
1@Controller 2public class HelloController { 3 @RequestMapping(value = "/", method = RequestMethod.GET) 4 public ModelAndView index(ModelAndView mav) { 5 mav.setViewName("index"); 6 List<Person> personList = new ArrayList<Person>(); 7 8 Person personA = new Person(); 9 personA.setName("A"); 10 personA.setAge(33); 11 personA.setHobby("プログラミング"); 12 personList.add(personA); 13 14 Person personB = new Person(); 15 personB.setName("B"); 16 personB.setAge(32); 17 personB.setHobby("書道"); 18 personList.add(personB); 19 20 Person personC = new Person(); 21 personC.setName("C"); 22 personC.setAge(20); 23 personC.setHobby("トマト栽培"); 24 personList.add(personC); 25 26 mav.addObject("personList", personList); 27 return mav; 28 } 29 30}
java
1 public class Person { 2 3 private String name; 4 private int age; 5 private String hobby; 6 7 public String getName() { 8 return name; 9 } 10 public void setName(String name) { 11 this.name = name; 12 } 13 public int getAge() { 14 return age; 15 } 16 public void setAge(int age) { 17 this.age = age; 18 } 19 public String getHobby() { 20 return hobby; 21 } 22 public void setHobby(String hobby) { 23 this.hobby = hobby; 24 } 25 26 27 28} 29 30
HTML
1<!DOCTYPE HTML> 2<html xmlns:th="http://www.thymeleaf.org"> 3<head> 4<title>Top page</title> 5<meta http-equiv="Content-Type" 6 content="text/html;charset=UTF-8"/> 7<style> 8body { font-size:13pt; color:gray; margin:5px 25px; } 9pre { font-size:13pt; color:gray; padding:5px 10px; border:1px; solid gray; } 10</style> 11</head> 12<body> 13 <form th:action="@{/confirm}" th:object="${Person}" method="post"> 14 <table id="personList"> 15 <tr> 16 <th>NAME</th> 17 <th>AGE</th> 18 <th>HOBBY</th> 19 </tr> 20 <tr th:each="person:${personList}"> 21 <td th:text="${person.name}" th:field="*{name}"></td> 22 <td th:text="${person.age}" th:field="*{age}"></td> 23 <td><input type="text" class="form-control" th:value="${person.hobby}" th:field="*{hobby}" /></td> 24 </tr> 25 </table> 26 <button type="button" id="addrow" onclick="addList();">+</button> 27 <button type="submit" id="confirm" >confirm</button> 28 </form> 29</body> 30<script language="javascript"> 31function addList(){ 32 var t=document.querySelector("#personList"); 33 var row1 = t.insertRow(-1); // 行を追加 34 var cell1 = row1.insertCell(0); // 一つ目のセルを追加 35 var cell2 = row1.insertCell(1); // 二つ目のセルを追加 36 var cell3 = row1.insertCell(2); // 三つ目のセルを追加 37 var input = '<input type="text" class="form-control" th:field="*{hobby}"/>' 38 cell1.innerHTML = input; 39 cell2.innerHTML = input; 40 cell3.innerHTML = input; 41 }
java
1@Controller 2public class ConfirmController { 3 @RequestMapping(value = "/confirm", method = RequestMethod.POST) 4 public String confirm (Person person, Model model){ 5 model.addAttribute("Person", person); 6 return "result";

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/11 12:33
2017/08/17 00:43
2017/08/18 02:49