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

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

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

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

Java

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

Spring

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

Q&A

1回答

4104閲覧

画面からの入力内容でリストを更新したい

icecleam

総合スコア46

JSP

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

Java

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

Spring

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

0グッド

0クリップ

投稿2020/08/29 02:12

編集2020/08/29 04:46

以下のadd.jspで点数を入力し、[明細追加]ボタンを押すと、プルダウンで選択した商品データがリストとして追加されていきます。

その時に、入力した点数を追加するリストの[点数]に反映(リストの更新)したいのですが、現状のままだと点数に何を入力しても点数が「0」になってしまいます

入力した点数を反映するのはどうすればいいのか分からないので、教えていただけないでしょうか。

申し訳ありませんが、よろしくおねがいします。

add.jsp

jsp

1<%@ page session="false" language="java" 2 contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 3<%@ page import="java.time.LocalDate"%> 4<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 5<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%> 6<!DOCTYPE html> 7<html> 8<head> 9<link rel="stylesheet" type="text/css" 10 href="/sales/resources/css/common.css" /> 11<title>売上システム(初期画面)</title> 12</head> 13<body> 14 <form:form modelAttribute="salesForm" action="/sales/system" var="list"> 15 <div class="header"> 16 <span class="titleName">オンラインショップ</span> 17 <div class="date"><%=LocalDate.now()%></div> 18 </div> 19 <div class="main"></div> 20 <div>明細追加画面</div> 21 <div> 22 商品: 23 <form:select path="goodsName" items="${nameList}" /> 24 <div> 25 点数: 26 <form:input path="quantity" /> 27 </div> 28 <div> 29 <input type="submit" name="add" value="明細追加" /> 30 </div> 31 <table> 32 <tr> 33 <th>削除</th> 34 <th>商品ID</th> 35 <th>商品名</th> 36 <th>単価</th> 37 <th>点数</th> 38 <th>小計</th> 39 </tr> 40 <c:forEach items="${allList}" var="item" varStatus="status"> 41 <tr class="even"> 42 <td><input type="radio" name="remove" /></td> 43 <td>${item.id}</td> 44 <td>${item.name}</td> 45 <td>${item.price}</td> 46 <td>${salesForm.quantity}</td> 47 <td>${item.subtotal}</td> 48 </tr> 49 </c:forEach> 50 </table> 51 <input type="submit" name="toInit" value="確定" /> 52 </div> 53 <input type="submit" name="remove" value="削除" /> 54 </form:form> 55</body> 56</html>

SalesSystemController.java

java

1package jp.practice.sales; 2 3import org.springframework.stereotype.Controller; 4import org.springframework.ui.Model; 5import org.springframework.web.bind.annotation.RequestMapping; 6import org.springframework.web.bind.annotation.SessionAttributes; 7 8/** 9 * Handles requests for the application home page. 10 */ 11@Controller 12@RequestMapping(value = "/system") 13@SessionAttributes 14public class SalesSystemController { 15 16 /** 17 * 初期画面から呼ばれる。選択した商品の明細追加画面を表示する。 18 * @param form フォームオブジェクト 19 * @param model モデルオブジェクト 20 * @return Viewとしてadd.jspを指定 21 */ 22 @RequestMapping(params = "add") 23 public String add(SalesForm form, Model model) { 24 Item item = RecordManager.findItem(form.getGoodsName()); 25 RecordManager.setNewItem(new Item(form.getId(), form.getGoodsName(), form.getPrice(), form.getQuantity(), form.getSubtotal())); 26 //RecordManager.findItem(form.getGoodsName()); 27 form.setId(item.getId()); 28 form.setGoodsName(item.getName()); 29 form.setPrice(item.getPrice()); 30 form.setQuantity(item.getQuantity()); 31 form.setSubtotal(item.getSubtotal()); 32 RecordManager.addToAllList(item); 33 model.addAttribute("nameList", RecordManager.makeNameList()); 34 model.addAttribute("allList", RecordManager.getallList()); 35 return "add"; 36 } 37 38 /** 39 * 細追加画面から呼ばれる。選択した商品を削除し明細追加画面を表示する。 40 * @param form フォームオブジェクト 41 * @param model モデルオブジェクト 42 * @return Viewとしてadd.jspを指定 43 */ 44 @RequestMapping(params = "remove") 45 public String remove(SalesForm form, Model model) { 46 Item item = RecordManager.findItem(form.getGoodsName()); 47 form.setId(item.getId()); 48 form.setGoodsName(item.getName()); 49 form.setPrice(item.getPrice()); 50 form.setQuantity(item.getQuantity()); 51 form.setSubtotal(item.getSubtotal()); 52 RecordManager.removeToAllList(item); 53 model.addAttribute("nameList", RecordManager.makeNameList()); 54 model.addAttribute("allList", RecordManager.getallList()); 55 return "add"; 56 } 57 58 /** 59 * 確認画面で登録を押した時に呼ばれる。データを登録して初期画面表示へ遷移する。 60 * @param form フォームオブジェクト 61 * @param model モデルオブジェクト 62 * @return initメソッドへのリンクを指定 63 */ 64 @RequestMapping(params = "toInit") 65 public String toInit(SalesForm form, Model model) { 66 //RecordManager.findItem(name); 67 return init(form, model); 68 } 69} 70 71

SalesForm.java

java

1package jp.practice.sales; 2 3import java.util.ArrayList; 4import java.util.List; 5 6public class SalesForm { 7 8 /** 商品ID */ 9 private String id; 10 /** 商品名 */ 11 private String goodsName; 12 /** 単価 */ 13 private int price; 14 /** 売上点数 */ 15 private int quantity; 16 /** 小景 */ 17 private int subtotal; 18 /** 商品点数 */ 19 private int point; 20 /** 削除番号 */ 21 private int delNumber; 22 23 List<Item> allList = new ArrayList<>(); 24 25 public SalesForm() { 26 27 } 28 /** 29 * @return id 30 */ 31 public String getId() { 32 return id; 33 } 34 35 /** 36 * @param id セットする id 37 */ 38 public void setId(String id) { 39 this.id = id; 40 } 41 /** 42 * @return price 43 */ 44 public int getPrice() { 45 return price; 46 } 47 48 /** 49 * @param price セットする price 50 */ 51 public void setPrice(int price) { 52 this.price = price; 53 } 54 55 /** 56 * @return quantity 57 */ 58 public int getQuantity() { 59 return quantity; 60 } 61 62 /** 63 * @param quantity セットする quantity 64 */ 65 public void setQuantity(int quantity) { 66 this.quantity = quantity; 67 } 68 69 /** 70 * @return subtotal 71 */ 72 public int getSubtotal() { 73 return subtotal; 74 } 75 76 77 /** 78 * @return goodsName 79 */ 80 public String getGoodsName() { 81 return goodsName; 82 } 83 84 /** 85 * @param goodsName セットする goodsName 86 */ 87 public void setGoodsName(String goodsName) { 88 this.goodsName = goodsName; 89 } 90 91 /** 92 * @return point 93 */ 94 public int getPoint() { 95 return point; 96 } 97 98 /** 99 * @param point セットする point 100 */ 101 public void setPoint(int point) { 102 this.point = point; 103 } 104 105 /** 106 * @return delNumber 107 */ 108 public int getDelNumber() { 109 return delNumber; 110 } 111 112 /** 113 * @param delNumber セットする delNumber 114 */ 115 public void setDelNumber(int delNumber) { 116 this.delNumber = delNumber; 117 } 118 119 /** 120 * @return allList 121 */ 122 public List<Item> getAllList() { 123 return allList; 124 } 125}

RecordManager.java

java

1package jp.practice.sales; 2 3import java.util.ArrayList; 4import java.util.List; 5 6/** 7 * 商品データ全体を保持するクラス 8 */ 9public final class RecordManager { 10 11 /** 明細データ */ 12 static List<Item> allList = new ArrayList<>(); 13 14 /** 商品データ */ 15 private static final List<Item> list = new ArrayList<Item>(); 16 static { 17 list.add(new Item("A00101", "油性ボールペン", 60, 0, 0)); 18 list.add(new Item("A00201", "極細ボールペン", 120, 0, 0)); 19 list.add(new Item("A00301", "蛍光ペン6色セット", 420, 0, 0)); 20 list.add(new Item("A00401", "シャープペンシル", 100, 0, 0)); 21 list.add(new Item("A00501", "鉛筆H(1ダース)", 400, 0, 0)); 22 list.add(new Item("B00101", "無線綴ノートA4", 100, 0, 0)); 23 list.add(new Item("B00201", "リングノートA4", 120, 0, 0)); 24 list.add(new Item("B00301", "領収書", 350, 0, 0)); 25 list.add(new Item("C00101", "はさみ(青)", 128, 0, 0)); 26 list.add(new Item("C00201", "ステープラー", 338, 0, 0)); 27 list.add(new Item("C00301", "2穴パンチ", 128, 0, 0)); 28 list.add(new Item("C00401", "ゼムクリップ", 98, 0, 0)); 29 list.add(new Item("C00501", "消しゴム", 58, 0, 0)); 30 } 31 32 public static Item findItem(String goodsName) { 33 int index = list.indexOf(new Item("", goodsName, 0,0,0)); 34 return list.get(index); 35 } 36 37 /** 38 * 商品データを返す。 39 * @return 商品データ 40 */ 41 public static List<Item> getNameist() { 42 return list; 43 } 44 45 /** 46 * 明細データを返す。 47 * @return 明細データ 48 */ 49 public static List<Item> getallList() { 50 return allList; 51 } 52 53 /** 54 * リストに商品情報を 1 件追加する 55 */ 56 public static void addToAllList(Item newItem) { 57 Item item = new Item(newItem.getId(), newItem.getName(), newItem.getPrice(),newItem.getQuantity(),newItem.getSubtotal()); 58 allList.add(item); 59 } 60 61 /** 62 * リストに商品情報を 1 件削除する 63 */ 64 public static void removeToAllList(Item newItem) { 65 Item item = new Item(newItem.getId(), newItem.getName(), newItem.getPrice(),newItem.getQuantity(),newItem.getSubtotal()); 66 allList.remove(item); 67 } 68 69 /** 70 * newItemを商品データlistに書き込む。 71 */ 72 public static void updateItem() { 73 list.set(list.indexOf(newItem), newItem); 74 } 75 76 /** 77 * newItemにデータを書き込む 78 * @param ni セットする item 79 */ 80 public static void setNewItem(Item ni) { 81 newItem = ni; 82 }

Item.java

java

1package jp.practice.sales; 2 3public class Item { 4 5 /** 商品ID */ 6 private String id; 7 /** 商品名 */ 8 private String name; 9 /** 単価 */ 10 private int price; 11 /** 売上点数 */ 12 private int quantity; 13 /** 小景 */ 14 private int subtotal; 15 16 public Item(String id, String name, int price, int quantity, int subtotal) { 17 this.id = id; 18 this.name = name; 19 this.price = price; 20 this.quantity = quantity; 21 this.subtotal = subtotal; 22 } 23 24 public String getId() { 25 return id; 26 } 27 28 public void setId(String id) { 29 this.id = id; 30 } 31 32 public String getName() { 33 return name; 34 } 35 36 public void setName(String name) { 37 this.name = name; 38 } 39 40 public int getPrice() { 41 return price; 42 } 43 44 public void setPrice(int price) { 45 this.price = price; 46 } 47 48 public int getQuantity() { 49 return quantity; 50 } 51 52 public void setQuantity(int quantity) { 53 this.quantity = quantity; 54 } 55 56 public int getSubtotal() { 57 return subtotal; 58 } 59 60 /** 61 * @param subtotal セットする subtotal 62 */ 63 public void setSubtotal(int subtotal) { 64 this.subtotal = subtotal; 65 } 66 67 68 69 70}

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

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

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

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

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

m.ts10806

2020/08/29 02:30

「回答がつかなかったから削除」は通らないのでは。質問編集すれば質問一覧のアクティブタブに上がってきますしタグをちゃんとつけれられているなら必ず知見のある人の目には止まります。
icecleam

2020/08/29 02:34 編集

そうなんですね。。。 すみません、回答がいただきたくて身勝手なことをしてしまいました。 以後、気をつけて質問を投稿させていただきます。 ご指摘いただきありがとうございました。
m.ts10806

2020/08/29 02:35

むしろ急かしたり急いだりしている感を出す方が逆効果です。他者を頼ることを選んだ以上は、基本は待機です。
icecleam

2020/08/29 02:37

その通りですね、すみません考えと配慮が足りていなかったです。。
dameo

2020/08/31 11:15

ちゃんと見てないですが、 <td>${salesForm.quantity}</td> は <td>${item.quantity}</td> ではないですか?
guest

回答1

0

SalesSystemController.java

Java

1 public String toInit(SalesForm form, Model model) { 2 //RecordManager.findItem(name); 3 return init(form, model); 4 }

更新処理が実装されていません。

add.jsp

JSP

1<input type="submit" name="toInit" value="確定" />

確定ボタンにより動作するメソッドで init だけしているため、値を更新する処理がなされないためではないでしょうか。

投稿2020/08/31 17:01

t4c62096

総合スコア20

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問