質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
JSP

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

MVC

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

Java

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

Spring

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

1回答

6480閲覧

ラジオボタンでの削除について

naotaro0704

総合スコア19

JSP

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

MVC

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

Java

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

Spring

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2019/09/04 06:24

編集2019/09/04 07:35

・売上明細の削除欄のラジオボタンを選択し、削除ボタンを押下し、
・商品の残りが1件以上のときは明細追加画面に戻り、
・0件のときは初期画面へ戻る。
というプログラムを作成したいです。ラジオボタンは作成できたのですが実際に削除する方法がわかりませんよろしくお願いします。

SalesSystemController.java

java

1 2@Controller 3@RequestMapping(value = "/system") 4public class SalesSystemController { 5 6 private static final Logger logger = LoggerFactory.getLogger(SalesSystemController.class); 7 8 /** Stringの定数として次の6つを定義する*/ 9 private static final String INIT = "init"; 10 private static final String ADD = "add"; 11 private static final String FIX = "fix"; 12 13 private static final String ERRMSG = "1以上の数字を入力してください。"; 14 private static final String ADDMSG = "明細に追加しました。"; 15 private static final String FIXMSG = "以下のように売上登録しました。"; 16 private static final String DELETE = "選択された明細行を削除しました。"; 17 18/** 初期画面を呼び出す処理*/ 19 @RequestMapping(value = "/start") 20 public String init(SalesForm form, Model model) { 21 /** RecordManagerにItemListを格納する*/ 22 model.addAttribute("ItemList", RecordManager.getItemList()); 23 /** RecordManagerにNameListを作成する*/ 24 model.addAttribute("nameList", RecordManager.makeNameList()); 25 return INIT; 26 } 27 28/** 初期画面での明細追加押下時の処理*/ 29 @RequestMapping(params = "add", method = RequestMethod.POST) 30 public String add(@Valid @ModelAttribute("salesForm") SalesForm form, BindingResult result, Model model) { 31 32 logger.info("Post : " + form.getQuantity()); 33 34 /** 1の数字以外または未入力のときエラーとして処理*/ 35 if (result.hasErrors()) { 36 /** RecordManagerにNameListを作成する*/ 37 model.addAttribute("nameList", RecordManager.makeNameList()); 38 /** エラーメッセージの表示*/ 39 model.addAttribute("message1", ERRMSG); 40 /** 初期画面へ*/ 41 return INIT; 42 } 43 /** 1以上のとき正常処理*/ 44 else { 45 /** RecordManagerのselectItemにidとquantityを格納*/ 46 model.addAttribute("allList", RecordManager.selectItem(form.getId(),form.getQuantity())); 47 /** RecordManagerにNameListを作成する*/ 48 model.addAttribute("nameList", RecordManager.makeNameList()); 49 /** QuantityにaddDataを格納*/ 50 model.addAttribute("addData", form.getQuantity()); 51 /**明細追加完了のメッセージを表示*/ 52 model.addAttribute("message2", ADDMSG); 53 /** 売上に合計金額を表示*/ 54 model.addAttribute("total", RecordManager.getTotal()); 55 /** 明細追加画面へ*/ 56 return ADD; 57 } 58 } 59 60/** 明細追加画面での明細追加押下時の処理*/ 61 @RequestMapping(params = "addition", method = RequestMethod.POST) 62 public String additon(@Valid @ModelAttribute("salesForm") SalesForm form, BindingResult result, Model model) { 63 if (result.hasErrors()) { 64 /** RecordManagerのselectItemにidとquantityを格納*/ 65 model.addAttribute("allList", RecordManager.selectItem(form.getId(),form.getQuantity())); 66 /** RecordManagerにNameListを作成する*/ 67 model.addAttribute("nameList", RecordManager.makeNameList()); 68 /** QuantityにaddDataを格納*/ 69 model.addAttribute("addData", form.getQuantity()); 70 /** エラーメッセージの表示*/ 71 model.addAttribute("message1", ERRMSG); 72 73 //商品は追加しないが売上明細は表示したい。 74 }else { 75 /** RecordManagerのselectItemにidとquantityを格納*/ 76 model.addAttribute("allList", RecordManager.selectItem(form.getId(),form.getQuantity())); 77 /** RecordManagerにNameListを作成する*/ 78 model.addAttribute("nameList", RecordManager.makeNameList()); 79 /** QuantityにaddDataを格納*/ 80 model.addAttribute("addData", form.getQuantity()); 81 /** 売上に合計金額を表示*/ 82 model.addAttribute("total",RecordManager.getTotal()); 83//System.out.println(); 84 /**明細追加完了のメッセージを表示*/ 85 model.addAttribute("message2", ADDMSG); 86 } 87 return ADD; 88 } 89 90/** 明細追加画面での確定押下時の処理*/ 91 @RequestMapping(params = "firm") 92 public String firm( SalesForm form, Model model) { 93 /** RecordManagerのselectItemにnameを格納*/ 94 model.addAttribute("allList", RecordManager.selectItem(form.getId(),form.getQuantity())); 95 /** 売上登録完了のメッセージを表示*/ 96 model.addAttribute("message3", FIXMSG); 97 /** 売上Idの表示*/ 98// model.addAttribute("salesId"getValue()); 99 /** 売上に合計金額を表示*/ 100 model.addAttribute("total",RecordManager. getTotal()); 101 /** 売上登録画面へ*/ 102 return FIX; 103 } 104 105 106/** 売上登録画面での終了押下時の処理*/ 107 @RequestMapping(params = "end") 108 public String end( SalesForm form, Model model) { 109 /** RecordManagerにItemListを格納す**/ 110 model.addAttribute("ItemList", RecordManager.getItemList()); 111 /** RecordManagerにNameListを作成する*/ 112 model.addAttribute("nameList", RecordManager.makeNameList()); 113 114 //終了押下時初期化して明細画面にいきたい。 115 /**初期画面へ*/ 116 return INIT; 117 } 118 119/** 明細追加画面での削除押下時の処理*/ 120 @RequestMapping(params = "remove") 121 public String remove(SalesForm form, Model model) { 122 /** RecordManagerのselectItemにidとquantityを格納*/ 123 model.addAttribute("allList", RecordManager.selectItem(form.getId(),form.getQuantity())); 124 /** RecordManagerにNameListを作成する*/ 125 model.addAttribute("nameList", RecordManager.makeNameList()); 126 /** QuantityにaddDataを格納*/ 127 model.addAttribute("addData", form.getQuantity()); 128 /** 削除完了メッセージの表示*/ 129 model.addAttribute("message4", DELETE); 130 131 //削除押下じ商品が1件以上残っていたら明細追加画面へ、0件だった場合初期画面へ戻りたい。 132// if { 133 /** 明細追加画面へ*/ 134 return ADD; 135// }else { 136 /** 初期画面へ*/ 137// return INIT; 138// } 139 } 140 141} 142

RecordManager.java

java

1 2public final class RecordManager { 3 4 /** 商品データ */ 5 private static List<Item> list = new ArrayList<>(); 6 private static List<Item> selectList = new ArrayList<>(); 7 private static Item item; 8 /** totalを定義 */ 9 private static int total = 0; 10 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 19 } 20 21 /** 商品名 */ 22 public static List<Item> selectItem(String id, int quantity) { 23 24 for (int i = 0; i < list.size(); i++) { 25 26 if (id.equals(list.get(i).getId())) { 27 // System.out.println(i); 28 /** Itemを再定義 */ 29 Item item = new Item(id, list.get(i).getName(), list.get(i).getPrice(), quantity, 30 quantity * list.get(i).getPrice()); 31 32 selectList.add(item); 33 34 /** xを定義 */ 35 int x = quantity * list.get(i).getPrice(); 36 total = total + x; 37 38 break; 39 } 40 41 } 42 43 return selectList; 44 45 } 46 47 /** nameListの作成 */ 48 public static String[] makeNameList() { 49 String[] nameList = new String[list.size()]; 50 for (int i = 0; i < list.size(); i++) { 51 nameList[i] = (list.get(i)).getName(); 52 } 53 return nameList; 54 } 55 56 /** itemList取得 */ 57 public static List<Item> getItemList() { 58 return list; 59 } 60 61 /** itemLista設定 */ 62 public static void setItemList() { 63 /** 設定した[item」をlist内で検索する。 */ 64 list.set(list.indexOf(item), item); 65 } 66 67 public static Duration ofMillis(long millis){ 68 long value = System.currentTimeMillis(); 69 System.out.println(value); 70 return duration; 71 } 72 /** 売上idの作成 */ 73 public static void recordManager(String[] args) { 74 long value = System.currentTimeMillis(); 75 System.out.println(value); 76 } 77// { 78//Date d = new Date(); 79// long val = d.getTime(); 80//System.out.println(val); 81// } 82 83 /** 84 * @return total 85 */ 86 public static int getTotal() { 87 return total; 88 } 89 90 /** 91 * @param total 92 * セットする total 93 */ 94 public static void setTotal(int total) { 95 RecordManager.total = total; 96 } 97} 98

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 </form:form> 34 <br> 35 <div class="message"> 36 <font color="#ff0000"> <c:out value="${message1}" /> 37 </font> <font color="#1e90ff"> <c:out value="${message2}" /> 38 </font> 39 </div> 40 <br> 41 <form:form modelAttribute="salesForm" action="/sales/system"> 42 <div class="main2"> 43 44 <div class=""> 45 <span class="details">売上明細</span> 46 47 <table class="product"> 48 49 <tr> 50 <th>削除</th> 51 <th>商品ID</th> 52 <th>商品名</th> 53 <th>単価</th> 54 <th>点数</th> 55 <th>小計</th> 56 </tr> 57 <c:forEach items="${allList}" var="allList" varStatus="status"> 58 <tr> 59 <th class="itemradiobtn"><form:radiobutton path="name" 60 label="" value="s_id" /></th> 61 <th class="itemid">${allList.id}</th> 62 <th class="itemnama">${allList.name}</th> 63 <th class="itemprice">${allList.price}</th> 64 <th class="itemquantity">${allList.quantity}</th> 65 <th class="itemsubtotal">${allList.subtotal}</th> 66 </tr> 67 </c:forEach> 68 </table> 69 </div> 70 71 <div class="total"> 72 合計: 73 <c:out value="${total}" /> 7475 </div> 76 </div> 77 78 79 <div class="footer"> 80 81 <input type="submit" name="remove" value="削除" 82 onclick="remove_row(this)" /> <input type="submit" name="firm" 83 value="確定" /> 84 </div> 85 86 </form:form> 87 88</body> 89</html> 90

###試したこと
jsp上でonClickを使い、削除ボタンを押下した際の処理子試しては見たのですがうまくいかずほかの手が思い浮かばないまま手詰まりの状態です。

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

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

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

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

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

naotaro0704

2019/09/04 07:37

ご指摘ありがとうございます。
guest

回答1

0

ベストアンサー

削除する行を選ぶラジオボタンを出力している箇所が

html

1<form:radiobutton path="name" label="" value="s_id" />

なので、常に s_id の文字列になっているようです。

削除する商品番号をもとに削除するのであれば、value属性は ${allList.id} とし、さらに name属性を指定して、削除する番号を格納するためのパラメータ名を指定しましょう。

そうした上で、RecordManagerクラスに、削除処理を記述してControllerから呼び出せばよいでしょう。

投稿2019/09/04 12:08

A-pZ

総合スコア12011

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

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

naotaro0704

2019/09/05 03:55

回答ありがとうございます。 実際に削除処理はどのようにコードを作成すればいいでしょうか。 検索しては見たのですが、deleteやremove、deleteRowなどが出てきてどれを使用するかよくわかりません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問