##やりたいこと
SpringBootとThymeleafでWEBアプリを開発しております。
テーブルの端にチェックボックスを用意し、ボタンを押すとチェックした項目をすべてDBから削除するような処理を作ろうとしています。
テーブルの表示まではできたのですが、Contorollerに受け渡すことができず質問させていただきました。
Excelのスクリーンショットですが完成イメージです↓
※削除ボタンを押すとDBから「tanaka」と「yamada」が削除されるイメージです。
##ソースコード
Java
1import lombok.Data; 2 3@Data 4public class Person { 5 private int id; 6 private String name; 7 private int age; 8 private boolean checked; 9 10 public Person(int id, String name, int age, boolean checked) { 11 this.setId(id); 12 this.setName(name); 13 this.setAge(age); 14 this.setChecked(checked); 15 } 16} 17
Java
1import java.util.List; 2import lombok.Data; 3 4@Data 5public class PersonForm { 6 private List<Person> personList; 7} 8
Java
1//Controller 2@RequestMapping("/editPersonList") 3 public String editPersonList(Model model) { 4 Person person1 = new Person(1, "tanaka", 30, false); 5 Person person2 = new Person(2, "tanaka", 40, false); 6 Person person3 = new Person(3, "tanaka", 50, false); 7 8 List<Person> personList = new ArrayList<Person>(); 9 personList.add(person1); 10 personList.add(person2); 11 personList.add(person3); 12 13 PersonForm personForm = new PersonForm(); 14 personForm.setPersonList(personList); 15 16 model.addAttribute("personForm", personForm); 17 18 return "/editPersonList"; 19 } 20 21 @PostMapping("/updatePersonList") 22 public String updatePersonList(@ModelAttribute PersonForm personForm) { 23 // DB更新処理 24 System.out.println(personForm); 25 26 return "redirect:/top_page"; 27 }
html
1<!DOCTYPE html> 2<html lang="jp"> 3<html xmlns:th="http://www.thymeleaf.org"> 4 5<head> 6 <title>ユーザー編集</title> 7 <meta charset="UTF-8"> 8 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 9 <link rel="stylesheet" type="text/css" href="/css/new_common.css"> 10</head> 11 12<body> 13 <div th:replace="header_design :: header_design"></div> 14 <div style="margin-top: 100px;">テスト用画面</div> 15 <p>ユーザ一覧</p> 16 <form th:action="@{/updatePersonList}" th:method="post" th:object="${personForm}"> 17 <table> 18 <thead> 19 <tr> 20 <td>ID</td> 21 <td>名前</td> 22 <td>年齢</td> 23 <td>削除フラグ</td> 24 </tr> 25 </thead> 26 <tbody> 27 <th:block th:each="person,stat : *{personList}"> 28 <tr> 29 <td><input type="text" th:field="*{personList[__${stat.index}__].id}"></td> 30 <td><input type="text" th:field="*{personList[__${stat.index}__].name}"></td> 31 <td><input type="text" th:field="*{personList[__${stat.index}__].age}"></td> 32 <td><input type="checkbox" th:field="*{personList[__${stat.index}__].checked}"></td> 33 <!-- ↓試したけどエラーが発生した--> 34 <!-- <td><input type="text" th:field="${person.id}"></td> 35 <td><input type="text" th:field="${person.name}"></td> 36 <td><input type="text" th:field="${person.age}"></td> 37 <td><input type="checkbox" th:field="${person.checked}"></td> --> 38 </tr> 39 </th:block> 40 </tbody> 41 </table> 42 <input type="submit" value="更新"> 43 </form> 44</body> 45 46</html>
##エラーメッセージ
諸事情により削除させていただきました
参考にさせて頂いたサイト
https://area-b.com/blog/2015/02/04/2009/
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/03/09 04:49