現在、Thymeleafのチェックボックスを表示し、チェックされた値をcontroller側で受け取る処理がうまく実装出来ずに困っています。
ある条件に当てはまるセルのみを表示する一覧画面をThymeleafとSpringBootにて作成しています。
検索した結果をテーブル一覧に表示し、チェックボックスを付与します。
下記のように実装することで、検索結果(SelectList)を表示するテーブルにチェックボックスを付与するところまではできています。
ですが、出力されているチェックボックスにチェックを入れ、その値を取得するという実装ができていません。
例、3つチェックボックスが表示され、1,3番をチェックした場合は、1,3が入っている値を送信したいと思っています。
Thymeleaf
1 2<form method="post" th:action="@{/Test}" th:object="${FormEntity}"> 3 <!--検索処理した結果を表示するテーブル--> 4 <table> 5 <tr th:each="item : ${SelectList}"> 6 <td> 7 <input type="checkbox" name="checkbox" th:id="${item.Id}" th:value="${item.Id}" th:field="*{checks}" th:checked="${FormEntity.checks=='1'}" /> 8 <label th:for="${item.Id}" class="checkbox"></label> 9 </td> 10 <td> 11 <!--ほかにも表示している値はありますが、省略します。--> 12 </td> 13 </tr> 14 </table> 15 <!--送信ボタンを押下したらcontroller側にチェックを入れたボックスのvalue等を出力したいです。--> 16 <button value="submit" type="submit" name="submit">送信</button> 17</form>
上記の実装ですと、チェックボックスは表示できるのですが、チェックボックス自体が活性化していないような状態となっています。
th:fieldを削除するとチェックボックスは動作しますが、それだと値を取得することができなくなってしまいます。
どのようにすればチェックボックスを活性化させたまま、チェックを入れたボックスのvalue値等を取得できるのか教えていただけますと幸いです。
controller
1 @RequestMapping(value="/Test",params = "submit",method = RequestMethod.POST) 2 public ModelAndView Submit_Class(FormEntity FormEntity, Model model) throws ParseException { 3 //ここでどうにかしてチェックボックスにチェックを入れた値を取得したい。 4 } 5
ちなみにですが、実際に出力されているHTMLは以下の通りです。
HTML
1<input type="checkbox" name="checks" id="1" value="1"> 2<input type="hidden" name="_checks" value="on"> 3<label for="1" class="checkbox"></label> 4 5<input type="checkbox" name="checks" id="2" value="2"> 6<input type="hidden" name="_checks" value="on"> 7<label for="2" class="checkbox"></label> 8 9<input type="checkbox" name="checks" id="3" value="3"> 10<input type="hidden" name="_checks" value="on"> 11<label for="3" class="checkbox"></label>
皆様のお力をお借りできれば幸いです。
よろしくお願いいたします。
追記:
FormEntityの値を追加しました。
checkboxの配列を入れる予定のFormはこちらになります。
FormEntity
1 2@Getter 3@Setter 4public class FormEntity { 5 6 private String[] checks; 7 8 public void setChecks(String[] checks) { 9 this.checks = Checks; 10 } 11 12 public String[] getChecks() { 13 return checks; 14 } 15}
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー