前提
現状設計段階のため、まだ実際にコードを書いているわけではなく、
手法としてできないかを質問させていただいております。
リスト型の情報をDBに登録する手段としてMyBatisの「BulkInsert」というものが使用できるとのことで、DB登録については解決しました。
(問題なく処理が行われるかは開発時に調べます。)
実現したいこと
画面上で<table>タグで囲われたリスト状になっている情報をDBに登録をしたいです。
コントローラーで取得したいです。
上記のように動的に行を加減できるリスト型をコントローラーでリスト型で受け取り、
そのリストの行数分DBに登録をしていく形で実装を行いたいです。
リストの加減は表左側の「追加」「削除」をクリックすることで入力行を加減します。
DBからのリストで変動するのではなく、あくまでクライアント側での操作によりリストが加減する形です。
自分なりに調べてみたところ、以下のページに記載してあるものが近い実装かと思っておりますが、
SpringMVC 複数のフォームオブジェクトにバインドする方法
動的にリストが変動するとなった際にどのようにやればよいのかを悩んでしまいました。
<追記開始>
A-pZ様のご回答を参考に作ってみたのですが、データが取得できませんでした。
html
1<table class="table table-striped table-bordered table-hover list "> 2 <thead> 3 <tr> 4 <th>Action</th> 5 <th>会員種別</th> 6 <th>料金名</th> 7 <th>金額</th> 8 <th>無料アカウント数</th> 9 </tr> 10 </thead> 11 <tbody id="test_table1" th:each="row, stat : ${itemList}"> 12 <tr> 13 <td><input type="button" value="追加" onclick="insertRow('test_table1')" /></td> 14 <td><input type="text" name="membarType" th:name="'membarType[' + ${stat.index} + ']'" th:value="${row.membarType}" ></td> 15 <td><input type="text" name="ratesCode" th:name="'ratesCode[' + ${stat.index} + ']'" th:value="${row.ratesCode}" ></td> 16 <td><input type="text" name="amount" th:name="'amount[' + ${stat.index} + ']'" th:value="${row.amount}" ></td> 17 <td><input type="text" name="freeAccounts" th:name="'freeAccounts[' + ${stat.index} + ']'" th:value="${row.freeAccounts}" ></td> 18 </tr> 19 </tbody> 20</table>
java
1@RequestMapping(params="selectInput", method=RequestMethod.POST) 2public String postSearch2( 3 @ModelAttribute inputmodel formList, 4 Model model){ 5 6 ~~ 略 ~~ 7 8} 9 10@Data 11public static class inputmodel { 12 List<String> membarType; 13 List<String> ratesCode; 14 List<String> amount; 15 List<String> freeAccounts; 16}
<追記終了>
<削除開始>
DB側のテーブル構成は上記のリストと全く同じ形式で作成しているため、リストのレコードをそのままDBに登録できれば問題ないです。
<追記開始>
DB定義は以下の通りです。
<追記終了>
<削除終了>
お手数ですが、よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー