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

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

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

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

Java

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

Spring

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

受付中

Javaにおけるループ処理について

naotaro0704
naotaro0704

総合スコア0

MVC

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

Java

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

Spring

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

0回答

0評価

0クリップ

41閲覧

投稿2019/08/29 07:37

編集2022/01/12 10:55

亜### 前提・実現したいこと
SpringMVCフレームワークを使用しています。

初期画面の「商品」プルダウンで商品を選択します。選択した商品名をRecordManager.javaのlistで一致するまでループ処理をしたいのですが、for文を使うとは思うのですがどのようにして使ったらよいかわかりません。初歩的な質問かもしれませんがわかるかたいましたらご教授お願いします。

該当のソースコード

SalesSystemController.java

java

package jp.practice.sales; @Controller @RequestMapping(value = "/system") public class SalesSystemController { // private MessageSource messageSource; private static final Logger logger = LoggerFactory.getLogger(SalesSystemController.class); private static final String INIT = "init"; private static final String ADD = "add"; private static final String FIX = "fix"; private static final String ERRMSG = "1以上の数字を入力してください"; @RequestMapping(value = "/start") public String init(SalesForm form, Model model) { // RecordManagerにItemListを格納する model.addAttribute("ItemList", RecordManager.getItemList()); // RecordManagerにNameListを作成する model.addAttribute("nameList", RecordManager.makeNameList()); return INIT; } @RequestMapping(params = "add", method = RequestMethod.POST) public String add(@Valid SalesForm form, BindingResult result, Model model) { logger.info("Post : " + form.getQuantity()); System.out.println(form.getId()); model.addAttribute("allList", RecordManager.selectItem(form.getName())); // RecordManagerにNameListを作成する model.addAttribute("nameList", RecordManager.makeNameList()); if (result.hasErrors()) { model.addAttribute("message", ERRMSG); return INIT; } else { model.addAttribute("addData", form.getQuantity()); return ADD; } } }

SalesForm.java

java

package jp.practice.sales; public class SalesForm implements Serializable { private static final long serialVersionUID = 1L; /** 商品id */ private String id; /** 商品名 */ private String name; /** 単価 */ private int price; /** 個数 */ @Min(1) //@Pattern(regexp = "\d") @NotNull private int quantity; /** 小計 */ private int subtotal; 以下、上記のコンストラクタとgetterとsetterがあります

Item.java

java

package jp.practice.sales; /** * 売上明細1件分のデータを保持するクラス */ public class Item { /** 商品id */ private String id; /** 商品名 */ private String name; /** 単価 */ private int price; /** 個数 */ private int quantity; /** 小計 */ private int subtotal; /* * (非 Javadoc) * * @see java.lang.Object#hashCode() */ @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + quantity; return result; } /* * (非 Javadoc) * * @see java.lang.Object#equals(java.lang.Object) */ @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (!(obj instanceof Item)) { return false; } Item other = (Item) obj; if (quantity != other.quantity) { return false; } return true; } /** * @return id */ public String getId() { return id; } /** * @param id * セットする id */ public void setId(String id) { this.id = id; } /** * @return name */ public String getName() { return name; } /** * @param name * セットする name */ public void setName(String name) { this.name = name; } /** * @return price */ public int getPrice() { return price; } /** * @param price * セットする price */ public void setPrice(int price) { this.price = price; } /** * @return quantity */ public int getQuantity() { return quantity; } /** * @param quantity * セットする quantity */ public void setQuantity(int quantity) { this.quantity = quantity; } /** * @return subtotal */ public int getSubtotal() { return subtotal; } /** * @param subtotal * セットする subtotal */ public void setSubtotal(int subtotal) { this.subtotal = subtotal; } /** * コンストラクターです。 * * @param id * 商品id * @param name * 商品名 * @param price * 単価 * @param quantity * 個数 * @param subtotal * 小計 */ public Item(String id, String name, int price, int quantity, int subtotal) { this.id = id; this.name = name; this.price = price; this.quantity = quantity; this.subtotal = subtotal; } } // Copyright 2015 FUJITSU APPLICATIONS LIMITED

RecordManager.java

package

//商品一覧 /** * 商品データ全体を保持するクラス */ public final class RecordManager { /** 商品データ */ private static List<Item> list = new ArrayList<>(); private static List<Item> selectList = new ArrayList<>(); private static Item 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)); } public static List<Item> selectItem(String name) { Item item = new Item("",name, 0, 0, 0); selectList.add(list.get(list.indexOf(item))); return selectList; } public static String[] makeNameList() { String[] idList = new String[list.size()]; for (int i = 0; i < list.size(); i++) { idList[i] = (list.get(i)).getName(); } return idList; } public static List<Item> getItemList() { return list; } public static void setItemList() { list.set(list.indexOf(item), item); } }

init.jsp

jsp

<body> <form:form modelAttribute="salesForm" action="/sales/system"> <div class="header"> <span class="titleName">直太郎オンラインショップ</span> <div class="date"><%=LocalDate.now()%></div> </div> <div class="main"> <div> 商品: <form:select path="name"> <form:option value="A00101">油性ボールペン</form:option> <form:option value="A00201">極細ボールペン</form:option> <form:option value="A00301">蛍光ペン6色セット</form:option> <form:option value="A00401">シャープペンシル</form:option> </form:select> <br/> </div> <div> <span class="itemQuantity">点数:</span> <form:input path="quantity" size="20" /> </div> </div> <div class="footer"> <input type="submit" name="add" value="明細追加" /> </div> <div class="message"> <c:out value="${message}" /> </div> </form:form> </body>

add.jsp

jsp

<body> <form:form modelAttribute="salesForm" action="/sales/system"> <div class="header"> <span class="titleName">直太郎オンラインショップ</span> <div class="date"><%=LocalDate.now()%></div> </div> <div class="main"> <div> 商品: <form:select path="name"> <form:option value="A00101">油性ボールペン</form:option> <form:option value="A00201">極細ボールペン</form:option> <form:option value="A00301">蛍光ペン6色セット</form:option> <form:option value="A00401">シャープペンシル</form:option> </form:select> <br /> </div> <div> <span class="itemQuantity">点数:</span> <form:input path="quantity" size="20" /> <form:errors path="quantity" /> </div> <div class="add"> <div> <input type="submit" name="add" value="明細追加" /> </div> </div> </div> </form:form> <form:form modelAttribute="salesForm" action="/sales/system"> <div class="main2"> <div class="message"> <c:out value="${message}" /> </div> <div class=""> <span class="details">売上明細</span> <table class="product"> <tr> <th>削除</th> <th>商品ID</th> <th>商品名</th> <th>単価</th> <th>点数</th> <th>小計</th> </tr> <c:forEach items="${allList}" var="allList" varStatus="status"> <tr> <th><form:radiobutton path="name" label="" value="radiobtn" /></th> <th>${allList.id}</th> <th>${allList.name}</th> <th>${allList.price}</th> <th>${allList.quantity}</th> <th>${allList.subtotal}</th> </tr> </c:forEach> </table> </div> <div class="total"> 合計: <fmt:formatNumber value="${total}" groupingUsed="true" /> </div> </div> <div class="footer"> <script type="text/javascript"> function remove_row(target) { var TR = target.parentNode.parentNode; TR.parentNode.deleteRow(TR.rowIndex - 1); } </script> <input type="submit" name="remove" value="削除" onclick="remove_row(this)" /> <input type="submit" name="firm" value="確定" /> </div> </form:form> </body> </html>

init画面でソース表示したときのコード

jsp

<!DOCTYPE html> <html> <head> <link rel="stylesheet" type="text/css" href="/sales/resources/css/common.css" /> <title>直太郎オンラインショップ</title> </head> <body> <form id="salesForm" action="/sales/system" method="post"> <div class="header"> <span class="titleName">直太郎オンラインショップ</span> <div class="date">2019-08-30</div> </div> <div class="main"> <div> 商品: <select id="name" name="name"> <option value="A00101">油性ボールペン</option> <option value="A00201">極細ボールペン</option> <option value="A00301">蛍光ペン6色セット</option> <option value="A00401">シャープペンシル</option> </select> <br /> </div> <div> <span class="itemQuantity">点数:</span> <input id="quantity" name="quantity" type="text" value="0" size="20"/> </div> </div> <div class="footer"> <input type="submit" name="add" value="明細追加" /> </div> <br> <div class="message1"> </font><br> </div> </form> </body>

試したこと

<select><option/><select>でもプルダウン表示をしてみましたが値の変更に苦労すると思いやめました。

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

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

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

m.ts10806
m.ts10806

2019/08/29 07:48

ちょっと状況意味が分かりません。 select既に使われてるみたいですし、選択したものでlistから一致した情報ならループ必要ないように思います。listの作り方の問題もあるかもしれませんが。。
naotaro0704
naotaro0704

2019/08/29 08:15

一致すればいいのですが、なぜかどの商品を選択しても油性ボールペンが売上明細に表示されてしまいます。これはどうしたら解決するでしょうか。
m.ts10806
m.ts10806

2019/08/29 08:20

init.jspで選んだものをadd.jspでという話ですよね。 ちなみにinit.jspを画面表示したときにブラウザ「ソースを表示」でセレクトボックスの内容を表示させるとどうなってますか?質問本文に追記してください
naotaro0704
naotaro0704

2019/08/30 00:14

このように出ました。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

MVC

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

Java

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

Spring

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