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

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

新規登録して質問してみよう
ただいま回答率
85.47%
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回答

2362閲覧

ラジオボタン未選択時のエラーの出し方

trainingnow

総合スコア22

JSP

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

MVC

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

Java

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

Spring

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

ラジオボタン

ラジオボタンはフォームに使われる要素のひとつであり、ユーザに限られた選択肢からひとつの答えを選んでもらうというものです。

0グッド

0クリップ

投稿2021/12/27 08:05

編集2021/12/27 08:30

前提・実現したいこと

削除のラジオボタンを押下しないで削除ボタンを押下すると「明細行を選択してください」と出力したい。
自分の考えではSalesSystemControllerのelse if文の条件が拾えていないと思っていますが、int型のdelnumberが選択されいない状態を表す条件式が思いつきません。
よろしくお願いします。
![イメージ説明]

発生している問題・エラーメッセージ

HTTPステータス 500

HTTPステータス 500 - Internal Server Error Type Exception Report メッセージ Request processing failed; nested exception is java.lang.ArrayIndexOutOfBoundsException: -1 説明 The server encountered an unexpected condition that prevented it from fulfilling the request.

SalesSystemController.java

@RequestMapping(params = "remove") public String remove(SalesForm form, Model model, SessionStatus sessionStatus) { model.addAttribute("salesForm", form); model.addAttribute("salesList", RecordManager.getList()); if (form.getAllList().size() > 0) { if (form.getDelNumber() >= 0) { form.getAllList().remove(form.getDelNumber()-1); model.addAttribute("salesForm", form); model.addAttribute("message", "選択された明細行を削除しました。"); model.addAttribute("messageClass", "addMessage"); form.setDelNumber(0); model.addAttribute("goodsList", form.getAllList()); } else if (form.getDelNumber() == -1){ model.addAttribute("salesForm", form); model.addAttribute("goodsList", form.getAllList()); model.addAttribute("message", "明細行を選択してください。"); model.addAttribute("messageClass", "errorMessage"); } int total = 0; for (Item goods : form.getAllList()) { total += goods.getSubtotal(); } model.addAttribute("total", total); //選択された商品がない場合、初期画面に戻る if (form.getAllList().isEmpty()) { return "init"; } return "add"; }

SalesForm.java

public class SalesForm { /** * goodsName */ private String goodsName; /** * point */ private String point; /** * delNumber */ private int delNumber; private ArrayList<Item> allList = new ArrayList<Item>(); /** * @return delNumber */ public int getDelNumber() { return delNumber; } /** * @param pDelNumber セットする delNumber * @return */ public int setDelNumber(int pDelNumber) { return this.delNumber = pDelNumber; } /** * @return goodsName */ public String getGoodsName() { return goodsName; } /** * @param pGoodsName セットする goodsName */ public void setGoodsName(String pGoodsName) { this.goodsName = pGoodsName; } /** * @return point */ public String getPoint() { return point; } /** * @param pPoint セットする point */ public void setPoint(String pPoint) { this.point = pPoint; } public ArrayList<Item> getAllList() { return allList; } public void addToAllList(Item goods) { allList.add(goods); } }

RecordManager.java

/** 商品データ */ private static List<Item> list = new ArrayList<Item>(); static { list.add(new Item("A00101", "油性ボールペン", 60, 0, 0)); list.add(new Item("A00201", "極細ボールペン", 120, 0, 0)); list.add(new Item("A00301", "蛍光ペン6色セット", 420, 0, 0)); list.add(new Item("A00401", "シャープペンシル", 100, 0, 0)); list.add(new Item("A00501", "鉛筆H(1ダース)", 400, 0, 0)); list.add(new Item("B00101", "無線綴ノートA4", 100, 0, 0)); list.add(new Item("B00201", "リングノートA4", 120, 0, 0)); list.add(new Item("B00301", "領収書", 350, 0, 0)); list.add(new Item("C00101", "はさみ(青)", 128, 0, 0)); list.add(new Item("C00201", "ステープラー", 338, 0, 0)); list.add(new Item("C00301", "2穴パンチ", 128, 0, 0)); list.add(new Item("C00401", "ゼムクリップ", 98, 0, 0)); list.add(new Item("C00501", "消しゴム", 58, 0, 0)); } /** * 引数で指定された商品名に一致する商品データを返却 * @param goodsName 検索キーとなる商品名 * @return 検索結果の商品データ */ public static Item findItem(String goodsName) { int index = list.indexOf(new Item("", goodsName, 0,0,0)); return list.get(index); } /** * * @return list */ public static List<Item> getList(){ return list; }

add.jsp

<c:forEach items="${goodsList}" var="item" step="1" varStatus="status">
<tr>
<td><form:radiobutton path="delNumber" value="${status.count}" /></td>
<td>${item.id}</td>
<td>${item.name}</td>
<td>${item.price}</td>
<td>${item.quantity}</td>
<td>${item.subtotal}</td>
</tr>
</c:forEach>
</table>

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

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

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

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

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

guest

回答1

0

自己解決

解決しました。ありがとうございました。

投稿2022/01/27 06:59

trainingnow

総合スコア22

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問