前提・実現したいこと
tableの行削除についてです。ラジオボタンで選択した行を削除させるようにしたいのですが、現在選択した行ではない行が削除されてしまっています。削除自体は実行されています。
該当のソースコード
SalesSystemController.java
java
1~中略~ 2 3if (RecordManager.getSelectList().size() > 0) { 4 /** 5 * RecordManagerのselectListを取得し、allListという名前でmodelに登録する。 6 */ 7 model.addAttribute("allList", RecordManager.getSelectList()); 8 /** 9 * RecordManagerにnameListを作成 nameListという名前でmodelに登録する。 10 */ 11 model.addAttribute("nameList", RecordManager.makeNameList()); 12 /** 13 * RecordManagerのtotalを取得しtotalという名前でmodelに登録する。 14 */ 15 model.addAttribute("total", RecordManager.getTotal()); 16 /** 17 * 明細追加画面へ 18 */ 19 return ADD; 20 } 21 /** 売上明細の残りが0件のときの処理 */ 22 else { 23 /** 24 * 初期画面へ 25 */ 26 return INIT; 27 }
RecordManager.java
java
1public final class RecordManager<selectList> { 2 3 /** 商品データ */ 4 private static List<Item> list = new ArrayList<>(); 5 private static List<Item> selectList = new ArrayList<>(); 6 private static Item item; 7 /** totalを定義 */ 8 private static int total = 0; 9 private static long salesId; 10 private static int pos; 11 12 static { 13 list.add(new Item("A00101", "油性ボールペン", 60, 0, 0)); 14 list.add(new Item("A00201", "極細ボールペン", 120, 0, 0)); 15 list.add(new Item("A00301", "蛍光ペン6色セット", 420, 0, 0)); 16 list.add(new Item("A00401", "シャープペンシル", 100, 0, 0)); 17 list.add(new Item("A00501", "鉛筆H(1ダース)", 400, 0, 0)); 18 list.add(new Item("B00101", "無線綴ノートA4", 100, 0, 0)); 19 list.add(new Item("B00201", "リングノートA4", 120, 0, 0)); 20 list.add(new Item("B00301", "領収書", 350, 0, 0)); 21 list.add(new Item("C00101", "はさみ(青)", 128, 0, 0)); 22 list.add(new Item("C00201", "ステープラー", 338, 0, 0)); 23 list.add(new Item("C00301", "2穴パンチ", 128, 0, 0)); 24 list.add(new Item("C00401", "ゼムクリップ", 98, 0, 0)); 25 list.add(new Item("C00501", "消しゴム", 58, 0, 0)); 26 } 27 28 /** 商品名 */ 29 public static List<Item> selectItem(String id, int quantity) { 30 31 for (int i = 0; i < list.size(); i++) { 32 33 if (id.equals(list.get(i).getId())) { 34 // System.out.println(i); 35 /** Itemを再定義 */ 36 Item item = new Item(id, list.get(i).getName(), list.get(i).getPrice(), quantity, 37 quantity * list.get(i).getPrice()); 38 39 selectList.add(item); 40 41 /** xを定義 */ 42 int subtotal = quantity * list.get(i).getPrice(); 43 total = total + subtotal; 44 45 break; 46 } 47 48 } 49 50 return selectList; 51 52 } 53 54 /** nameListの作成 */ 55 public static String[] makeNameList() { 56 String[] nameList = new String[list.size()]; 57 for (int i = 0; i < list.size(); i++) { 58 nameList[i] = (list.get(i)).getName(); 59 } 60 return nameList; 61 } 62 /** idListの作成 */ 63 public static String[] makeIdList() { 64 String[] idList = new String[list.size()]; 65 for (int i = 0; i < list.size(); i++) { 66 idList[i] = (list.get(i)).getId(); 67 } 68 return idList; 69 } 70 71 72 /** 選択した売上明細を削除 */ 73 public static void remove(int pos) { 74 /** 合計の更新 */ 75 total = total - selectList.get(pos).getSubtotal(); 76 System.out.println(pos); 77 selectList.remove(pos); 78 79 } 80 81 82 83 /** ↓getterとsetter */ 84 85 /** itemList取得 */ 86 public static List<Item> getItemList() { 87 return list; 88 } 89 90 /** itemLista設定 */ 91 public static void setItemList() { 92 /** 設定した[item」をlist内で検索する。 */ 93 list.set(list.indexOf(item), item); 94 } 95 96 /** 97 * @return selectList 98 */ 99 public static List<Item> getSelectList() { 100 return selectList; 101 } 102 103 /** 104 * @param selectList 105 * セットする selectList 106 */ 107 public static void setSelectList(List<Item> selectList) { 108 RecordManager.selectList = selectList; 109 } 110 111 112 /** 113 * @return pos 114 */ 115 public static int getPos() { 116 return pos; 117 } 118 119 /** 120 * @param pos 121 * セットする pos 122 */ 123 public static void setPos(int pos) { 124 RecordManager.pos = pos; 125 } 126 127} 128
add.jsp
jsp
1<body> 2 <form:form modelAttribute="salesForm" action="/sales/system"> 3 <div class="header"> 4 <span class="titleName">直太郎オンラインショップ</span> 5 <div class="date"><%=LocalDate.now()%></div> 6 </div> 7 <div class="main"> 8 <div> 9 商品: 10 <form:select path="id"> 11 12 <form:option path="id" value="${idList}" begin="1"/> 13 <form:options items="${nameList}"/> 14 15 </form:select> 16 17 <br /> 18 </div> 19 <div> 20 <span class="itemQuantity">点数:</span> 21 <form:input path="quantity" size="20" /> 22 </div> 23 24 <div class="add"> 25 <div> 26 <input type="submit" name="addition" value="明細追加" /> 27 </div> 28 </div> 29 </div> 30 31 <br> 32 <div class="message"> 33 <font color="#ff0000"> <c:out value="${message1}" /> 34 </font> 35 <font color="#1e90ff"> <c:out value="${message2}" /> 36 <font color="#1e90ff"> <c:out value="${message4}" /> 37 </font> 38 </font> 39 <font color="#ff0000"> <c:out value="${message5}" /> 40 </font> 41 </div> 42 <br> 43 44 45 46 <div class=""> 47 <span class="details">売上明細</span> 48 49 <table class="product"> 50 51 <tr> 52 <th>削除</th> 53 <th>商品ID</th> 54 <th>商品名</th> 55 <th>単価</th> 56 <th>点数</th> 57 <th>小計</th> 58 </tr> 59 <c:forEach items="${allList}" var="allList" varStatus="status" > 60 <tr> 61 <th class="itemradiobtn"> 62 <form:radiobutton path="name" name="pos" label="" value="${status.index}" /></th> 63 <th class="id">${allList.id}</th> 64 <th class="name">${allList.name}</th> 65 <th class="price">${allList.price}</th> 66 <th class="quantity">${allList.quantity}</th> 67 <th class="subtotal">${allList.subtotal}</th> 68 </tr> 69 </c:forEach> 70 </table> 71 </div> 72 73 <div class="total"> 74 合計: 75 <fmt:formatNumber groupingUsed="true"> 76 <c:out value="${total}" /> 77 </fmt:formatNumber> 78 円 79 </div> 80 81 82 <div class="footer"> 83 84 <input type="submit" name="remove" value="削除" 85 onclick="remove_row(this)" /> <input type="submit" name="firm" 86 value="確定" /> 87 </div> 88 89 </form:form> 90 91</body>
試したこと
選択したラジオボタンの1つ上の行が削除されていたので、
public static void remove(int pos) { /** 合計の更新 */ total = total - selectList.get(pos+1).getSubtotal(); System.out.println(pos+1); selectList.remove(pos+1);
というふうにpos+1に変更してみました。
System.out.println(pos+1); ### 補足情報(FW/ツールのバージョンなど) clipse Java EE IDE for Web Developers. Version: Mars.2 Release (4.5.2) ローカルホストTomcat8
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/17 04:16
2019/09/17 07:46
2019/09/17 08:20
2019/09/17 08:50
2019/09/18 16:59