[実現]リストの一行ごとに実装している更新ボタンを押して、その行に対して入力した数値に更新するようにしたい。
いろいろ試しましたが、知識不足でうまくいきませんでした、知恵を貸していただけたら幸いです。
該当のソースコード
add.jsp
1<form:form action="/sales/system" modelAttribute="salesForm"> 2 <table> 3 <thead> 4 <tr> 5 <th>削除</th> 6 <th>商品ID</th> 7 <th>商品名</th> 8 <th>単価</th> 9 <th>点数</th> 10 <th>小計</th> 11 <th>更新</th> 12 </tr> 13 </thead> 14 15 <tbody> 16 <c:forEach items= "${allList}" var = "product" varStatus ="status"> 17 <tr> 18 <td><form:checkbox path="delNumList" value="${status.count}"/></td> 19 <td>${product.productId}</td> 20 <td>${product.name}</td> 21 <td>${product.unitPrice}</td> 22 <td><input type="number" name="numPoint" min="1" max="100" value="${product.quantity}"></td> 23 <td>${product.subtotal}</td> 24 <td> 25 <input type="hidden" name="reloadNum" value="${status.count}" /> 26 <input type="submit" name="reload" value="更新" /> 27 </td> 28 </tr> 29 </c:forEach> 30 </tbody> 31 </table> 32 33 <div> 34 合計<c:out value="${total}"/>円 35 </div> 36 37 <div class="footer"> 38 <input type="submit" name="removeProduct" value="削除" /> 39 <input type="submit" name="fix" value="確定" /> 40 </div> 41 </form:form>
SalesController.java
1/** 2 * 更新 3 * @param form フォームオブジェクト 4 * @param model モデルオブジェクト 5 * @return Add add.jsp 6 * */ 7 @RequestMapping(params = "reload") 8 public String reload(SalesForm form, Model model) { 9 10 int quantity = form.getNumPoint(); 11 12 int reloadNum = form.getReloadNum(); 13 14 15 if (reloadNum >= 0) { 16 Product existingProduct = form.getAllList().get(reloadNum -1); 17 18 existingProduct.setQuantity(quantity); 19 existingProduct.setSubtotal(quantity * existingProduct.getUnitPrice()); 20 form.getAllList().set(reloadNum-1, existingProduct); 21 } 22 mysql.putTogether(model, form, mysql); 23 24 form.clear(); 25 26 return ADD; 27 }
試したこと
ループしたときの行数をフォームクラスのreloadNum変数に渡して、その行数ごとのオブジェクトに対して処理を行いたかったのですが、最初にリストに格納したものしか更新できず、二番目以降はダメでした。(というより、すべての更新ボタンが最初のオブジェクト用の更新ボタンになっています。)
回答1件
あなたの回答
tips
プレビュー