質問編集履歴

2

エラーメッセージを追記しました。

2020/05/16 15:05

投稿

sakura2685
sakura2685

スコア20

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Plan plan はフィールド String planNameを保持しているとき、
4
4
 
5
- 以下のコードでフォームを作成しようとしているのですがうまく動作しません。。
5
+ 以下のHTMLでフォームを作成しようとしているのですがthymeleafのエラーになってしまいます。。
6
6
 
7
7
 
8
8
 
@@ -155,3 +155,11 @@
155
155
  }
156
156
 
157
157
  ```
158
+
159
+ ```err
160
+
161
+ An error happened during template parsing (template: "class path resource [templates/client/form.html]")
162
+
163
+ org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/client/form.html]")
164
+
165
+ ```

1

指摘いただいた点について修正しました。

2020/05/16 15:05

投稿

sakura2685
sakura2685

スコア20

test CHANGED
@@ -1 +1 @@
1
- 【Spring】【thymeleaf】リストの要素をフィールドに設定したい
1
+ リストの要素をフィールドに設定したい
test CHANGED
@@ -6,9 +6,15 @@
6
6
 
7
7
 
8
8
 
9
+ th:eachでplanフィールドを設定することは可能でしょうか?
10
+
11
+
12
+
9
13
  ```HTML
10
14
 
15
+ <form th:action="@{''}" method="post" th:object="${client}">
16
+
11
- <div th:object="${client}">
17
+ <input type="hidden" th:field="*{id}">
12
18
 
13
19
  <tr>
14
20
 
@@ -22,10 +28,130 @@
22
28
 
23
29
  </tr>
24
30
 
25
- </div>
31
+ </form>
26
32
 
27
33
  ```
28
34
 
29
35
 
30
36
 
37
+ ```ClientController
38
+
39
+ //クライアントに紐づくプラン編集画面表示
40
+
41
+ @GetMapping("/{clientId}/plan/{planId}/edit")
42
+
31
- th:eachでplanフィールドを設定することは可能でしょうか?
43
+ public String editPlanWithClientGet(
44
+
45
+ @PathVariable("clientId") Client client,
46
+
47
+ @PathVariable("planId") Plan plan,
48
+
49
+ Model model) {
50
+
51
+
52
+
53
+ model.addAttribute("client", client);
54
+
55
+ model.addAttribute("plan", plan);
56
+
57
+
58
+
59
+ return "client/plan/form";
60
+
61
+ }
62
+
63
+
64
+
65
+ //クライアントに紐づくプラン編集
66
+
67
+ @PostMapping("/{clientId}/plan/{planId}/edit")
68
+
69
+ public String editPlanWithClientPost(
70
+
71
+ @PathVariable("clientId") Client client,
72
+
73
+ Plan plan) {
74
+
75
+
76
+
77
+ plan.setClient(client);
78
+
79
+ planService.updatePlan(plan);
80
+
81
+
82
+
83
+ return "redirect:/";
84
+
85
+ }
86
+
87
+ ```
88
+
89
+ ```Plan
90
+
91
+ @Entity
92
+
93
+ @Data
94
+
95
+ public class Plan {
96
+
97
+
98
+
99
+ @Id
100
+
101
+ @GeneratedValue(strategy = GenerationType.AUTO)
102
+
103
+ private Integer id;
104
+
105
+
106
+
107
+ @NotBlank
108
+
109
+ private String planName;
110
+
111
+
112
+
113
+ @ManyToOne
114
+
115
+ private Client client;
116
+
117
+
118
+
119
+ }
120
+
121
+ ```
122
+
123
+ ```Client
124
+
125
+ @Entity
126
+
127
+ @Data
128
+
129
+ public class Client {
130
+
131
+
132
+
133
+ @Id
134
+
135
+ @GeneratedValue(strategy = GenerationType.AUTO)
136
+
137
+ private Integer id;
138
+
139
+
140
+
141
+ //クライアント名
142
+
143
+ @NotBlank(message="※クライアント名を入力してください")
144
+
145
+ private String clientName;
146
+
147
+
148
+
149
+ @OneToMany(mappedBy = "client", cascade = CascadeType.ALL)
150
+
151
+ private List<Plan> plans;
152
+
153
+
154
+
155
+ }
156
+
157
+ ```