前提・実現したいこと
ラジオボタン押下時の動作についてです。説明が足りない部分があるかもしれませんがよろしくお願いします。
ラジオボタンを選択して、削除を押下すると選択されたselectListが削除されるプログラムを作りたいのです。実行するとメッセージは表示されるのですが、削除自体が行われません。エラーは発生していないのでどこを修正すればいいのかがわかりません。
該当のソースコード
SalesSystemController.java
java
1@Controller 2@RequestMapping(value = "/system") 3public class SalesSystemController { 4 5 private static final Logger logger = LoggerFactory.getLogger(SalesSystemController.class); 6 7 /** Stringの定数として次の6つを定義する */ 8 private static final String INIT = "init"; 9 private static final String ADD = "add"; 10 private static final String FIX = "fix"; 11 12 private static final String ERRMSG = "1以上の数字を入力してください。"; 13 private static final String ADDMSG = "明細に追加しました。"; 14 private static final String FIXMSG = "以下のように売上登録しました。"; 15 16 17 /** 初期画面を呼び出す処理 */ 18 @RequestMapping(value = "/start") 19 public String init(SalesForm form, Model model) { 20 /** RecordManagerにItemListを格納する */ 21 model.addAttribute("ItemList", RecordManager.getItemList()); 22 /** RecordManagerにNameListを作成する */ 23 model.addAttribute("nameList", RecordManager.makeNameList()); 24 return INIT; 25 } 26 27 28 29~(中略)~ 30 } 31 32 /** 明細追加画面での削除押下時の処理 */ 33 @RequestMapping(params = "remove") 34 public String remove(SalesForm form, Model model) { 35 36 /** RecordManagerにNameListを作成する */ 37 model.addAttribute("nameList", RecordManager.makeNameList()); 38 /** QuantityにaddDataを格納 */ 39 model.addAttribute("addData", form.getQuantity()); 40 41 /** ラジオボタン選択による条件分岐 */ 42 43 /** ラジオボタンを選択せずに削除ボタンを押下した時の処理 */ 44 45 46 /**削除処理*/ 47 RecordManager.remove(); 48 /** 削除完了メッセージの表示 */ 49 model.addAttribute("message4", DELETE); 50 51 /** 商品の残りの数による条件分岐 */ 52 53 /** 売上明細の残りが1件以上の処理*/ 54 55 if ( RecordManager.getSelectList().size()>1){ 56 /** RecordManagerのselectLisitを取得 */ 57 model.addAttribute("allList",RecordManager.getSelectList()); 58 /** RecordManagerにNameListを作成する */ 59 model.addAttribute("nameList",RecordManager.makeNameList()); 60 /** 売上に合計金額を表示 */ 61 model.addAttribute("total",RecordManager.getTotal()); 62 /** 明細追加画面へ */ 63 return ADD; 64 } 65 66 } 67 } 68}
RecordManager.java
java
1 2package jp.practice.sales; 3 4//import java.time.Duration; 5import java.util.ArrayList; 6import java.util.List; 7 8//商品一覧 9/** 10 * 商品データ全体を保持するクラス 11 * @param <selectList> 12 */ 13public final class RecordManager<selectList> { 14 15 /** 商品データ */ 16 private static List<Item> list = new ArrayList<>(); 17 private static List<Item> selectList = new ArrayList<>(); 18 private static Item item; 19 /** totalを定義 */ 20 private static int total = 0; 21 private static long salesId ; 22 23 24 25 static { 26 list.add(new Item("A00101", "油性ボールペン", 60, 0, 0)); 27 list.add(new Item("A00201", "極細ボールペン", 120, 0, 0)); 28 list.add(new Item("A00301", "蛍光ペン6色セット", 420, 0, 0)); 29 list.add(new Item("A00401", "シャープペンシル", 100, 0, 0)); 30 31 } 32 33 /** 商品名 */ 34 public static List<Item> selectItem(String id, int quantity) { 35 36 for (int i = 0; i < list.size(); i++) { 37 38 if (id.equals(list.get(i).getId())) { 39 // System.out.println(i); 40 /** Itemを再定義 */ 41 Item item = new Item(id, list.get(i).getName(), list.get(i).getPrice(), quantity, 42 quantity * list.get(i).getPrice()); 43 44 selectList.add(item); 45 46 /** xを定義 */ 47 int x = quantity * list.get(i).getPrice(); 48 total = total + x; 49 50 break; 51 } 52 53 } 54 55 return selectList; 56 57 } 58 59 /** nameListの作成 */ 60 public static String[] makeNameList() { 61 String[] nameList = new String[list.size()]; 62 for (int i = 0; i < list.size(); i++) { 63 nameList[i] = (list.get(i)).getName(); 64 } 65 return nameList; 66 } 67 68 /** itemList取得 */ 69 public static List<Item> getItemList() { 70 return list; 71 } 72 73 /** itemLista設定 */ 74 public static void setItemList() { 75 /** 設定した[item」をlist内で検索する。 */ 76 list.set(list.indexOf(item), item); 77 } 78 79 /** 削除処理*/ 80// public void removeRow( ){ 81// selectList remove; 82// 83// } 84 85 /** 売上Idの取得*/ 86 87 /** 88 * @return salesId 89 */ 90 public static long getSalesId() { 91 long salesId = System.currentTimeMillis(); 92 return salesId; 93 } 94 95 /** 96 * @return selectList 97 */ 98 public static List<Item> getSelectList() { 99 return selectList; 100 } 101 102 /** 103 * @param selectList セットする selectList 104 */ 105 public static void setSelectList(List<Item> selectList) { 106 RecordManager.selectList = selectList; 107 } 108 109 /** 110 * @param salesId セットする salesId 111 */ 112 public static void setSalesId(long salesId) { 113 RecordManager.salesId = salesId; 114 } 115 116 /** データの初期化*/ 117 public static void clear() { 118 selectList = new ArrayList<>(); 119 } 120 121 122 /** 123 * @return total 124 */ 125 public static int getTotal() { 126 return total; 127 } 128 129 /** 130 * @param total 131 * セットする total 132 */ 133 public static void setTotal(int total) { 134 RecordManager.total = total; 135 } 136 publicstatic void remove() { 137 list.remove(selectList); 138}
add.jsp
jsp
1 2<body> 3 <form:form modelAttribute="salesForm" action="/sales/system"> 4 <div class="header"> 5 <span class="titleName">直太郎オンラインショップ</span> 6 <div class="date"><%=LocalDate.now()%></div> 7 </div> 8 <div class="main"> 9 <div> 10 商品: 11 <form:select path="id"> 12 13 <form:option value="A00101">油性ボールペン</form:option> 14 <form:option value="A00201">極細ボールペン</form:option> 15 <form:option value="A00301">蛍光ペン6色セット</form:option> 16 <form:option value="A00401">シャープペンシル</form:option> 17 <form:option value="A00501">鉛筆H(1ダース)</form:option> 18 19 </form:select> 20 <br /> 21 </div> 22 <div> 23 <span class="itemQuantity">点数:</span> 24 <form:input path="quantity" size="20" /> 25 </div> 26 27 <div class="add"> 28 <div> 29 <input type="submit" name="addition" value="明細追加" /> 30 </div> 31 </div> 32 </div> 33 34 <br> 35 <div class="message"> 36 <font color="#ff0000"> <c:out value="${message1}" /> 37 </font> 38 <font color="#1e90ff"> <c:out value="${message2}" /> 39 <font color="#1e90ff"> <c:out value="${message4}" /> 40 </font> 41 </font> 42 <font color="#ff0000"> <c:out value="${message5}" /> 43 </font> 44 </div> 45 <br> 46 47 48 49 <div class=""> 50 <span class="details">売上明細</span> 51 52 <table class="product"> 53 54 <tr> 55 <th>削除</th> 56 <th>商品ID</th> 57 <th>商品名</th> 58 <th>単価</th> 59 <th>点数</th> 60 <th>小計</th> 61 </tr> 62 <c:forEach items="${allList}" var="allList" varStatus="status"> 63 <tr> 64 <th class="itemradiobtn"> 65 <form:radiobutton path="name" name="delete" label="" value="${allList.id}" /></th> 66 <th class="id">${allList.id}</th> 67 <th class="nama">${allList.name}</th> 68 <th class="price">${allList.price}</th> 69 <th class="quantity">${allList.quantity}</th> 70 <th class="subtotal">${allList.subtotal}</th> 71 </tr> 72 </c:forEach> 73 </table> 74 </div> 75 76 <div class="total"> 77 合計: 78 <fmt:formatNumber groupingUsed="true"> 79 <c:out value="${total}" /> 80 </fmt:formatNumber> 81 円 82 </div> 83 84 85 <div class="footer"> 86 87 <input type="submit" name="remove" value="削除" 88 onclick="remove_row(this)" /> <input type="submit" name="firm" 89 value="確定" /> 90 </div> 91 92 </form:form> 93 94</body> 95</html> 96
###試したこと
listをselectListに変更して同じ動作をしてみたが変わらず。
ほかの改善点が思い浮かばず行き詰っています。
補足情報(FW/ツールのバージョンなど)
Eclipse Java EE IDE for Web Developers.
Version: Mars.2 Release (4.5.2)
ローカルホストTomcat8
あなたの回答
tips
プレビュー