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

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

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

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

Spring

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

Q&A

解決済

1回答

9309閲覧

Java Spring 入力値をFormクラスのリストに格納したい

Qingxuan

総合スコア7

Java

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

Spring

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

0グッド

0クリップ

投稿2020/10/12 03:52

前提・実現したいこと

オンラインショップの機能を作成していますが、プールダウンから商品を選び、数量を入力したら明細追加画面が表示されるような仕組みです。商品を追加すると、画面上のリストがどんどん更新されます。

###問題
仕様書では、「選択した商品の一覧を格納する売上明細リストallList を定義する。このリストはFormクラスにItem を要素として持つ非static なArrayList として実装する。さらにForm クラスにリストのゲッターgetAllList メソッドとリストに商品情報を1 件追加するaddToAllList メソッドを作る。」と書かれています。
私の理解では、選択された商品の名前をFormクラスから取得、itemを生成し、addToAllListメソッドを使ってallListの中に格納します。そしてcontrollerからgetAllListを呼び出し、選択された商品リストを表示します。

該当のソースコード

**Controller** @RequestMapping(params = "add") public String add(SalesForm form, Model model) { Item item = RecordManager.findItem(form.getGoodsName()); model.addAttribute("item",form.getAllList()); form.getGoodsName(); form.setPoint(form.getPoint()); model.addAttribute("nameList", RecordManager.makeNameList()); return "add"; } **SalesForm** public class SalesForm { //プルダウンリストから選択された商品名 private String goodsName; //入力する点数 private int point; private int delNumber; //ここでgetterとsetterを省略 private List<Item> allList = new ArrayList<Item>(); public List<Item> getAllList() { return allList; } public void addToAllList(Item item){ this.allList.add(item); } } **RecordManager** private static final List<Item> list = new ArrayList<Item>(); static { list.add(new Item("A00101", "油性ボールペン", 60, 0, 0)); //以下のリストを省略 } public static Item findItem(String name) { int index = list.indexOf(new Item("", name, 0,0,0)); return list.get(index); } public static String[] makeNameList() { String[] nameList = new String[list.size()]; for (int i = 0; i < list.size(); i++) { nameList[i] = (list.get(i)).getName(); } return nameList; } **item** private String id; private String name; private int price; private int quantity; private int subtotal; //ここでgetterとsetterを省略 **add.jsp** <table class="table"> <tr><th>削除</th> <th>商品ID</th> <th>商品名</th> <th>単価</th> <th>点数</th> <th>小計</th> </tr> <c:forEach items="${allList}" var="item" varStatus="status"> <tr> <td><input type="radio" name="radio"></td> <td>${item.id }</td> <td>${item.name }</td> <td>${item.price }</td> <td>${item.quantity }</td> <td>${item.subtotal }</td> </tr> </c:forEach>

試したこと

このようにしたら、選択された商品が画面に渡すことができませんでした。
イメージ説明

一応SpringMVC 複数のフォームオブジェクトにバインドする方法 を参考しましたが、うまくできなかったです。

どなたかぜひ知恵を貸してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

java

1@RequestMapping(params = "add") 2 public String add(SalesForm form, Model model) { 3 Item item = RecordManager.findItem(form.getGoodsName()); 4 .... 5 6}

選択したプルダウンの情報を取得する処理は実装されていそうですが、そのItemを格納する処理がどこにもないようです。

また、画面では

jsp

1<c:forEach items="${allList}" var="item" varStatus="status">

となっていますが、allList をmodelに渡していないので表示されません。

投稿2020/10/12 04:03

A-pZ

総合スコア12011

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

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

Qingxuan

2020/10/21 06:31

解決できました!ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問