質問するログイン新規登録

質問編集履歴

5

HTML修正

2020/02/20 05:25

投稿

chocolate_pie
chocolate_pie

スコア26

title CHANGED
File without changes
body CHANGED
@@ -204,29 +204,36 @@
204
204
  weight_input.html
205
205
  ```HTML
206
206
  <!DOCTYPE html>
207
- <html xmlns:th="http://www.thymeleaf.org"
207
+ <html>
208
- xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
209
- <head th:replace="layout :: layout('HOME',~{::link})">
208
+ <head>
210
209
  <meta charset="UTF-8">
211
210
  <title>Insert title here</title>
212
211
  </head>
213
212
  <body>
214
-
213
+ <form method="post"
215
- <form method="post" th:action="@{/weight_complete/}+${goalseqs[0].userid.id}">
214
+ th:action="@{/weight_complete/}+${goalseqs[0].userid.id}"
215
+ th:object="${meisaiForm}">
216
- <table>
216
+ <table>
217
- <tr>
217
+ <tr>
218
- <th>目標番号</th>
218
+ <th>目標番号</th>
219
- <th>期中ウエイト</th>
219
+ <th>期中ウエイト</th>
220
- <th>期末ウエイト</th>
220
+ <th>期末ウエイト</th>
221
- <th></th>
221
+ <th></th>
222
- </tr>
222
+ </tr>
223
- <tr th:each="goalseq,st: ${goalseqs}">
223
+ <tr th:each="goalseq,st: ${goalseqs}">
224
- <td><input type="text" th:value="${goalseq.goalid}"></td>
224
+ <td><p th:text="${goalseq.goalid}"></p></td>
225
+ <td><input type=number name="meisaiList[1].goalWeight"
225
- <td><input type=number name="meisaiList[1].goalWeight" th:name="'MeisaiList[' +${st.index} +'].[1].goalWeight'" th:value="${goalseq.meisaiList[1].goalWeight}"></td>
226
+ th:name="'MeisaiList[' +${st.index} +'].[1].goalWeight'"
227
+ th:value="${goalseq.meisaiList[1].goalWeight}"></td>
228
+ <td><input type=number name="meisaiList[2].goalWeight"
226
- <td><input type=number name="meisaiList[2].goalWeight" th:name="'MeisaiList[' +${st.index}+ '].[2].goalWeight'" th:value="${goalseq.meisaiList[2].goalWeight}" ></td>
229
+ th:name="'MeisaiList[' +${st.index}+ '].[2].goalWeight'"
230
+ th:value="${goalseq.meisaiList[2].goalWeight}"></td>
227
- </tr>
231
+ </tr>
228
- </table>
232
+ </table>
229
-
233
+ <button type=submit>送信</button>
234
+ </form>
235
+ </body>
236
+ </html>
230
237
  ```
231
238
 
232
239
  ### 試したこと

4

検証更新

2020/02/20 05:25

投稿

chocolate_pie
chocolate_pie

スコア26

title CHANGED
@@ -1,1 +1,1 @@
1
- Spring Boot+Thymeleaf 画面から入力されたリストの情報をフォームで受け取りたい
1
+ Spring Boot+Thymeleaf 画面から入力された二次元配列の情報をフォームで受け取りたい
body CHANGED
@@ -1,16 +1,19 @@
1
1
  ### 前提・実現したいこと
2
2
  いつもお世話になっております。
3
3
  Spring Boot+Thymeleafで画面から入力されたリストの情報をフォームで受け取りたいです。
4
- 正確にはリストの中にあるリストの情報を受け取りたいです。
4
+ 正確にはリストの中にあるリスト(二次元配列)の情報を受け取りたいです。
5
5
 
6
- [Springにおいて画面のリスト状になっている情報をコントローラーで取得したい](https://teratail.com/questions/126627)を参照して、リストになっている情報をコントローラーで受け取る処理の実装を試みましたがうまく値が渡らず、form値がnullになってしまいます。
6
+ [Springにおいて画面のリスト状になっている情報をコントローラーで取得したい](https://teratail.com/questions/126627)を参照して、リストになっている情報をコントローラーで受け取る処理の実装を試みましたがうまく値が渡らず、formから受け取る値がnullになってしまいます。
7
7
  これは、リストの中にリストがない場合なので、リストの中にリストがある書き方に躓いてしまいました。
8
8
 
9
- 昨日質問した、[SpringBoot フォームで複数レコードの値を受け取れない](https://teratail.com/questions/241894)では、リストの0番目の情報がすべての番号に反映されて更新されるだけの処理でした。
9
+ 前回質問した、[SpringBoot フォームで複数レコードの値を受け取れない](https://teratail.com/questions/241894)では、リストの0番目の情報がすべての番号に反映されて更新されるだけの処理でした。
10
10
 
11
11
  イメージ画像は以下の通りです。送信ボタンを押されると、一気にレコードが更新されるイメージです。
12
12
  ![イメージ説明](2ce1192fe0f047a1497b7a885c309faf.png)
13
13
  今回リストで更新したいのは、期中・期末の目標ウエイト(goalWeight)のみです。
14
+ 目標番号のリストの中にウェイトのリストが入っていて、その値をformに送信します。
15
+
16
+ 表示自体はできるのですが、javaに値がどうしても渡りません。
14
17
  Thymeleafの書き方がおかしいのだと思います。
15
18
  ご教授お願いします。
16
19
  ### 発生している問題・エラーメッセージ
@@ -219,27 +222,25 @@
219
222
  </tr>
220
223
  <tr th:each="goalseq,st: ${goalseqs}">
221
224
  <td><input type="text" th:value="${goalseq.goalid}"></td>
222
- <td><input type=number name="goalseq.meisaiList[1].goalWeight" th:name="'goalseq.meisaiList[1].goalWeight[ + ${st.index} +]'" th:value="${goalseq.meisaiList[1].goalWeight}"></td>
225
+ <td><input type=number name="meisaiList[1].goalWeight" th:name="'MeisaiList[' +${st.index} +'].[1].goalWeight'" th:value="${goalseq.meisaiList[1].goalWeight}"></td>
223
- <td><input type=number name="goalseq.meisaiList[2].goalWeight" th:name="'goalseq.meisaiList[2].goalWeight[ + ${st.index} +]'" th:value="${goalseq.meisaiList[2].goalWeight}" ></td>
226
+ <td><input type=number name="meisaiList[2].goalWeight" th:name="'MeisaiList[' +${st.index}+ '].[2].goalWeight'" th:value="${goalseq.meisaiList[2].goalWeight}" ></td>
224
227
  </tr>
225
228
  </table>
226
229
 
227
230
  ```
228
231
 
229
232
  ### 試したこと
230
- ```java
233
+ ・GoalSeqでeachを回すのではなく、Meisaiで回したらフォームに値が渡りました
231
- String weightRegist(@PathVariable Integer id,@Valid List<GoalSeqForm> goalseqform, Principal principal,BindingResult bindingResult) {
234
+ →この方法で解決しましたがこの解決方法は、[Springにおいて画面のリスト状になっている情報をコントローラーで取得したい](https://teratail.com/questions/126627)と同じになってしまうので質問を残してあります。
232
- ```
233
- ・コントローラPOSTメソッドの引数をリストにしてみました→失敗
234
235
 
235
236
  ### 補足情報(FW/ツールのバージョンなど)
236
- FormクラスのGoalSeqのレコード1つに対して、Meisaiのレコードは3つOneToManyで紐づいています
237
+ FormクラスのGoalSeqのレコード1つに対して、MeisaiのレコードはmeisaiListとして3つOneToManyで紐づいています
237
- (目標1つに対して、外部テーブルで期初、期中、期末のステータスを紐づけています)
238
- ・初心者で至らない点があると思いますがよろしくお願いします。
239
238
 
240
- 追記
239
+ 目標1つに対して、外部テーブルで期初、期中、期末のステータスを紐づけています。
241
- HTMLのinputタグ内のth:nameを下記のよう変更しら中身nullですがコントローラー側リスト受け取れる段階まできました。
240
+ 期初るmeisaiListの0番目更新る必要ないの、nameのところは、
241
+ 期中を「meisaiList[1].goalWeight」
242
+ 期末を「meisaiList[2].goalWeight」
242
- ```HTML
243
+ と表記しています。
244
+
245
+
243
- <td><input type=number name="meisaiList[1].goalWeight" th:name="'MeisaiList[' +${st.index} +'].[1].goalWeight'" th:value="${goalseq.meisaiList[1].goalWeight}"></td>
246
+ 初心者で至らない点があると思いますがよろしくお願いします。
244
- <td><input type=number name="meisaiList[2].goalWeight" th:name="'MeisaiList[' +${st.index}+ '].[2].goalWeight'" th:value="${goalseq.meisaiList[2].goalWeight}" ></td>
245
- ```

3

補足追記

2020/02/20 01:17

投稿

chocolate_pie
chocolate_pie

スコア26

title CHANGED
File without changes
body CHANGED
@@ -235,4 +235,11 @@
235
235
  ### 補足情報(FW/ツールのバージョンなど)
236
236
  ・FormクラスのGoalSeqのレコード1つに対して、Meisaiのレコードは3つOneToManyで紐づいています
237
237
  (目標1つに対して、外部テーブルで期初、期中、期末のステータスを紐づけています)
238
- ・初心者で至らない点があると思いますがよろしくお願いします。
238
+ ・初心者で至らない点があると思いますがよろしくお願いします。
239
+
240
+ 追記
241
+ HTMLのinputタグ内のth:nameを下記のように変更したら中身はnullですがコントローラー側でリストで受け取れる段階まできました。
242
+ ```HTML
243
+ <td><input type=number name="meisaiList[1].goalWeight" th:name="'MeisaiList[' +${st.index} +'].[1].goalWeight'" th:value="${goalseq.meisaiList[1].goalWeight}"></td>
244
+ <td><input type=number name="meisaiList[2].goalWeight" th:name="'MeisaiList[' +${st.index}+ '].[2].goalWeight'" th:value="${goalseq.meisaiList[2].goalWeight}" ></td>
245
+ ```

2

補足

2020/02/18 04:10

投稿

chocolate_pie
chocolate_pie

スコア26

title CHANGED
File without changes
body CHANGED
@@ -1,8 +1,10 @@
1
1
  ### 前提・実現したいこと
2
2
  いつもお世話になっております。
3
3
  Spring Boot+Thymeleafで画面から入力されたリストの情報をフォームで受け取りたいです。
4
+ 正確にはリストの中にあるリストの情報を受け取りたいです。
4
5
 
5
6
  [Springにおいて画面のリスト状になっている情報をコントローラーで取得したい](https://teratail.com/questions/126627)を参照して、リストになっている情報をコントローラーで受け取る処理の実装を試みましたがうまく値が渡らず、formの値がnullになってしまいます。
7
+ これは、リストの中にリストがない場合なので、リストの中にリストがある書き方に躓いてしまいました。
6
8
 
7
9
  昨日質問した、[SpringBoot フォームで複数レコードの値を受け取れない](https://teratail.com/questions/241894)では、リストの0番目の情報がすべての番号に反映されて更新されるだけの処理でした。
8
10
 
@@ -232,4 +234,5 @@
232
234
 
233
235
  ### 補足情報(FW/ツールのバージョンなど)
234
236
  ・FormクラスのGoalSeqのレコード1つに対して、Meisaiのレコードは3つOneToManyで紐づいています
237
+ (目標1つに対して、外部テーブルで期初、期中、期末のステータスを紐づけています)
235
238
  ・初心者で至らない点があると思いますがよろしくお願いします。

1

url修正

2020/02/18 03:31

投稿

chocolate_pie
chocolate_pie

スコア26

title CHANGED
@@ -1,1 +1,1 @@
1
- Spting Boot+Thymeleaf 画面から入力されたリストの情報をフォームで受け取りたい
1
+ Spring Boot+Thymeleaf 画面から入力されたリストの情報をフォームで受け取りたい
body CHANGED
@@ -1,8 +1,8 @@
1
1
  ### 前提・実現したいこと
2
2
  いつもお世話になっております。
3
- Spting Boot+Thymeleafで画面から入力されたリストの情報をフォームで受け取りたいです。
3
+ Spring Boot+Thymeleafで画面から入力されたリストの情報をフォームで受け取りたいです。
4
4
 
5
- [Springにおいて画面のリスト状になっている情報をコントローラーで取得したい](https://teratail.com/questions/input)を参照して、リストになっている情報をコントローラーで受け取る処理の実装を試みましたがうまく値が渡らず、formの値がnullになってしまいます。
5
+ [Springにおいて画面のリスト状になっている情報をコントローラーで取得したい](https://teratail.com/questions/126627)を参照して、リストになっている情報をコントローラーで受け取る処理の実装を試みましたがうまく値が渡らず、formの値がnullになってしまいます。
6
6
 
7
7
  昨日質問した、[SpringBoot フォームで複数レコードの値を受け取れない](https://teratail.com/questions/241894)では、リストの0番目の情報がすべての番号に反映されて更新されるだけの処理でした。
8
8