🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Q&A

解決済

1回答

2446閲覧

ラジオボタン選択の削除処理

naotaro0704

総合スコア19

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

0グッド

0クリップ

投稿2019/09/11 00:40

前提・実現したいこと

ラジオボタン選択字の削除処理についてです。
今現在ラジオボタンを選択することはできています。しかし、実際の削除処理が行われておりません。
処理をさせるコードが間違っているのか足りていないのかがわからず手詰まりの状態です。

該当のソースコード

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~中略~ 8 9 10 /** 明細追加画面での削除押下時の処理 */ 11 @RequestMapping(params = "remove") 12 public String remove(SalesForm form, BindingResult result,Model model) { 13 14 15 /** ラジオボタン選択による条件分岐 */ 16 17 /** ラジオボタンを選択せずに削除ボタンを押下した時の処理 */ 18 if(result.hasErrors()) { 19 /** RecordManagerのselectLisitを取得 */ 20 model.addAttribute("allList",RecordManager.getSelectList()); 21 /** RecordManagerにNameListを作成する */ 22 model.addAttribute("nameList", RecordManager.makeNameList()); 23 /** QuantityにaddDataを格納 */ 24 model.addAttribute("addData", form.getQuantity()); 25 /** 売上に合計金額を表示 */ 26 model.addAttribute("total", RecordManager.getTotal()); 27 /** 明細行選択エラーメッセージの表示 */ 28 model.addAttribute("message5", REMOVE); 29 /** 明細追加画面へ */ 30 return ADD; 31 32 } 33 /** ラジオボタンを選択して削除ボタンを押下した時の処理 */ 34 else { 35 /**削除処理*/ 36 RecordManager.remove(RecordManager.getPos()); 37 /** 削除完了メッセージの表示 */ 38 model.addAttribute("message4", DELETE); 39 40 /** 商品の残りの数による条件分岐 */ 41 42 /** 売上明細の残りが1件以上の処理*/ 43 if ( RecordManager.getSelectList().size()>1){ 44 /** RecordManagerのselectLisitを取得 */ 45 model.addAttribute("allList",RecordManager.getSelectList()); 46 /** RecordManagerにNameListを作成する */ 47 model.addAttribute("nameList", RecordManager.makeNameList()); 48 /** 売上に合計金額を表示 */ 49 model.addAttribute("total", RecordManager.getTotal()); 50 /** 明細追加画面へ */ 51 return ADD; 52 } 53 /** 売上明細の残りが0件のときの処理*/ 54 else { 55 /** 初期画面へ */ 56 return INIT; 57 } 58 } 59 60 } 61 62 63 64} 65

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 13 static { 14 list.add(new Item("A00101", "油性ボールペン", 60, 0, 0)); 15 list.add(new Item("A00201", "極細ボールペン", 120, 0, 0)); 16 list.add(new Item("A00301", "蛍光ペン6色セット", 420, 0, 0)); 17 list.add(new Item("A00401", "シャープペンシル", 100, 0, 0)); 18 list.add(new Item("A00501", "鉛筆H(1ダース)", 400, 0, 0)); 19 20 } 21 22 /** 商品名 */ 23 public static List<Item> selectItem(String id, int quantity) { 24 25 for (int i = 0; i < list.size(); i++) { 26 27 if (id.equals(list.get(i).getId())) { 28 // System.out.println(i); 29 /** Itemを再定義 */ 30 Item item = new Item(id, list.get(i).getName(), list.get(i).getPrice(), quantity, 31 quantity * list.get(i).getPrice()); 32 33 selectList.add(item); 34 35 /** xを定義 */ 36 int x = quantity * list.get(i).getPrice(); 37 total = total + x; 38 39 break; 40 } 41 42 } 43 44 return selectList; 45 46 } 47 48 /** nameListの作成 */ 49 public static String[] makeNameList() { 50 String[] nameList = new String[list.size()]; 51 for (int i = 0; i < list.size(); i++) { 52 nameList[i] = (list.get(i)).getName(); 53 } 54 return nameList; 55 } 56 57 /** 選択した売上明細を削除*/ 58 public static void remove(int pos) { 59 selectList.remove(pos); 60 System.out.println(pos); 61 } 62 63 /** データの初期化*/ 64 public static void clear() { 65 selectList = new ArrayList<>(); 66 total = 0; 67 68 } 69 70/** ↓getterとsetter*/ 71 72 /** itemList取得 */ 73 public static List<Item> getItemList() { 74 return list; 75 } 76 77 /** itemLista設定 */ 78 public static void setItemList() { 79 /** 設定した[item」をlist内で検索する。 */ 80 list.set(list.indexOf(item), item); 81 } 82 83 /** 84 * @return selectList 85 */ 86 public static List<Item> getSelectList() { 87 return selectList; 88 } 89 90 /** 91 * @param selectList セットする selectList 92 */ 93 public static void setSelectList(List<Item> selectList) { 94 RecordManager.selectList = selectList; 95 } 96 97 /** 売上Idの取得*/ 98 /** 99 * @return salesId 100 */ 101 public static long getSalesId() { 102 long salesId = System.currentTimeMillis(); 103 return salesId; 104 } 105 106 /** 107 * @param salesId セットする salesId 108 */ 109 public static void setSalesId(long salesId) { 110 RecordManager.salesId = salesId; 111 } 112 113 /** 114 * @return total 115 */ 116 public static int getTotal() { 117 return total; 118 } 119 120 /** 121 * @param total 122 * セットする total 123 */ 124 public static void setTotal(int total) { 125 RecordManager.total = total; 126 127 } 128 129 public static int getPos() { 130 return pos; 131 } 132 public static void setPos(int pos) { 133 RecordManager.pos = pos; 134 } 135 136} 137

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 value="A00101">油性ボールペン</form:option> 13 <form:option value="A00201">極細ボールペン</form:option> 14 <form:option value="A00301">蛍光ペン6色セット</form:option> 15 <form:option value="A00401">シャープペンシル</form:option> 16 <form:option value="A00501">鉛筆H(1ダース)</form:option> 17 18 </form:select> 19 <br /> 20 </div> 21 <div> 22 <span class="itemQuantity">点数:</span> 23 <form:input path="quantity" size="20" /> 24 </div> 25 26 <div class="add"> 27 <div> 28 <input type="submit" name="addition" value="明細追加" /> 29 </div> 30 </div> 31 </div> 32 33 <br> 34 <div class="message"> 35 <font color="#ff0000"> <c:out value="${message1}" /> 36 </font> 37 <font color="#1e90ff"> <c:out value="${message2}" /> 38 <font color="#1e90ff"> <c:out value="${message4}" /> 39 </font> 40 </font> 41 <font color="#ff0000"> <c:out value="${message5}" /> 42 </font> 43 </div> 44 <br> 45 46 47 48 <div class=""> 49 <span class="details">売上明細</span> 50 51 <table class="product"> 52 53 <tr> 54 <th>削除</th> 55 <th>商品ID</th> 56 <th>商品名</th> 57 <th>単価</th> 58 <th>点数</th> 59 <th>小計</th> 60 </tr> 61 <c:forEach items="${allList}" var="allList" varStatus="status"> 62 <tr> 63 <th class="itemradiobtn"> 64 <form:radiobutton path="name" name="delete" label="" value="${allList.id}" param="pos"/></th> 65 <th class="id">${allList.id}</th> 66 <th class="name">${allList.name}</th> 67 <th class="price">${allList.price}</th> 68 <th class="quantity">${allList.quantity}</th> 69 <th class="subtotal">${allList.subtotal}</th> 70 </tr> 71 </c:forEach> 72 </table> 73 </div> 74 75 <div class="total"> 76 合計: 77 <fmt:formatNumber groupingUsed="true"> 78 <c:out value="${total}" /> 79 </fmt:formatNumber> 8081 </div> 82 83 84 <div class="footer"> 85 86 <input type="submit" name="remove" value="削除" 87 onclick="remove_row(this)" /> <input type="submit" name="firm" 88 value="確定" /> 89 </div> 90 91 </form:form> 92 93 94

試したこと

recordManager.javaでgetterとsetter作成して、controllerで呼び出すコードは作成しました。その際のposが何を選択しても値が0のままで、受け取られていないような気がします。

補足情報(FW/ツールのバージョンなど)

Eclipse Java EE IDE for Web Developers.
Version: Mars.2 Release (4.5.2)
ローカルホストTomcat8

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/09/11 02:05 編集

私が知らないだけかもしれませんが、調べた限りparam属性ってないように思います。どこからの参考にしてますか? 通常であればname属性の値がキーとして送信されるはずですが
naotaro0704

2019/09/11 06:52

paramはなかったので削除しました。
guest

回答1

0

自己解決

削除処理自体は行われていました。合計が変化しないから処理が行われていないと思い込んでました。そこで合計値を更新したところ希望の動作をさせることができました。

投稿2019/09/11 06:55

naotaro0704

総合スコア19

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問