実現したいこと
初期画面(init.jsp)で明細追加ボタン押下時に明細追加画面(add.jsp)に遷移するようにしたいです。
発生している問題・分からないこと
現状では明細追加ボタンを押下すると初期画面のまま何も変わりません。
該当のソースコード
SalesSystemController.java
1package jp.practice.sales; 2 3import org.springframework.stereotype.Controller; 4import org.springframework.ui.Model; 5import org.springframework.web.bind.annotation.RequestMapping; 6 7/** 8 * Handles requests for the application home page. 9 */ 10@Controller 11@RequestMapping(value = "/system") 12public class SalesSystemController { 13 14 @RequestMapping(value = "/start") 15 public String init(SalesForm form, Model model) { 16 model.addAttribute("itemList", RecordManager.getNameList()); 17 return "init"; 18 } 19 20 @RequestMapping(params = "add") 21 public String add(SalesForm form, Model model) { 22 // 商品名をセッションに格納する 23 model.addAttribute("itemList", RecordManager.getNameList()); 24 // フォームから受け取った商品データの商品名でリストを検索する 25 Item item = RecordManager.findItem(form.getGoodsName()); 26 // 選択された商品を売上明細リストに追加 27 form.addToAllList(item); 28 // 商品の全データを取得し、セッションに格納する 29 model.addAttribute("allList", form.getAllList()); 30 return "add"; 31 } 32 33 @RequestMapping(params = "toInit") 34 public String toInit(SalesForm form, Model model) { 35 // セッションに商品名リストを格納する 36 model.addAttribute("itemList", RecordManager.getNameList()); 37 return "init"; 38 } 39 40}
init.jsp
1<%@ page session="false" language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 3<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %> 4<html> 5<head> 6 <title>Home</title> 7</head> 8<body> 9<p> 10 初期画面 11</p> 12<form:form modelAttribute="salesForm" aciton="/sales/system"> 13 <form:select path="goodsName" items="${itemList}" /> 14 <input type="submit" name="add" value="明細追加" /> 15</form:form> 16</body> 17</html>
add.jsp
1<%@ page session="false" language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> 2<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 3<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %> 4<html> 5<head> 6 <title>Home</title> 7</head> 8<body> 9<p> 10 明細追加画面 11</p> 12<form:form modelAttribute="salesForm" action="/sales/system"> 13 <form:select path="goodsName" items="${itemList}" /> 14 <input type="submit" name="add" value="明細追加" /> 15</form:form> 16<table> 17 <tr><th>商品ID</th><th>商品名</th><th>単価</th><th>点数</th><th>小計</th></tr> 18 <c:forEach items="${allList}" var="list"> 19 <tr> 20 <td>${list.id}</td> 21 <td>${list.name}</td> 22 <td>${list.price}</td> 23 <td>${list.quantity}</td> 24 <td>${list.subtotal}</td> 25 </tr> 26 </c:forEach> 27</table> 28 29</body> 30</html>
RecordManager.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 private static List<Item> list = new ArrayList<>(); 13 14 static { 15 list.add(new Item("A00101", "油性ボールペン", 60, 0, 0)); 16 list.add(new Item("A00201", "極細ボールペン", 120, 0, 0)); 17 list.add(new Item("A00301", "蛍光ペン6色セット", 420, 0, 0)); 18 list.add(new Item("A00401", "シャープペンシル", 100, 0, 0)); 19 list.add(new Item("A00501", "鉛筆H(1ダース)", 400, 0, 0)); 20 list.add(new Item("B00101", "無線綴ノートA4", 100, 0, 0)); 21 list.add(new Item("B00201", "リングノートA4", 120, 0, 0)); 22 list.add(new Item("B00301", "領収書", 350, 0, 0)); 23 list.add(new Item("C00101", "はさみ(青)", 128, 0, 0)); 24 list.add(new Item("C00201", "ステープラー", 338, 0, 0)); 25 list.add(new Item("C00301", "2穴パンチ", 128, 0, 0)); 26 list.add(new Item("C00401", "ゼムクリップ", 98, 0, 0)); 27 list.add(new Item("C00501", "消しゴム", 58, 0, 0)); 28 } 29 30 /** 31 * 引数で指定された商品名に一致する商品データを返却 32 * @param name 検索キーとなる商品名 33 * @return 検索結果の商品データ 34 */ 35 public static Item findItem(String goodsName) { 36 for (Item item : list) { 37 if (item.getName().equals(goodsName)) { 38 return item; 39 } 40 } 41 return null; 42 } 43 44 /** 45 * 商品名のリストを返却 46 * @return 商品名リスト 47 */ 48 public static List<String> getNameList() { 49 List<String> nameList = new ArrayList<String>(); 50 // リストのサイズ分繰り返す 51 for (int i = 0; i < list.size(); i++) { 52 // 商品名をリストに格納する 53 nameList.add(list.get(i).getName()); 54 } 55 return nameList; 56 } 57 58 /** 59 * 全商品のデータを返却 60 * @return 商品リスト 61 */ 62 public static List<Item> getAllList() { 63 return list; 64 } 65}
SalesForm.java
1package jp.practice.sales; 2 3import java.util.List; 4 5public class SalesForm { 6 7 private String goodsName; // 商品名 8 private int point; // 商品点数 9 private int delNumber; // 削除番号 10 private List<Item> allList; //売上明細リスト 11 12 public SalesForm() { 13 14 } 15 16 /** 17 * @return goodsName 18 */ 19 public String getGoodsName() { 20 return goodsName; 21 } 22 23 /** 24 * @param goodsName セットする goodsName 25 */ 26 public void setGoodsName(String goodsName) { 27 this.goodsName = goodsName; 28 } 29 30 /** 31 * @return point 32 */ 33 public int getPoint() { 34 return point; 35 } 36 37 /** 38 * @param point セットする point 39 */ 40 public void setPoint(int point) { 41 this.point = point; 42 } 43 44 /** 45 * @return delNumber 46 */ 47 public int getDelNumber() { 48 return delNumber; 49 } 50 51 /** 52 * @param delNumber セットする delNumber 53 */ 54 public void setDelNumber(int delNumber) { 55 this.delNumber = delNumber; 56 } 57 58 /** 59 * @return 全売上明細 60 */ 61 public List<Item> getAllList() { 62 return allList; 63 } 64 65 /** 66 * @param 1件の商品情報 67 * @return 売上明細リスト 68 */ 69 public List<Item> addToAllList (Item item) { 70 allList.add(item); 71 return allList; 72 } 73}
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
formタグのaciton属性やスペルにミスがないか確認したのですが、私の知識では解決できませんでした。
お知恵を貸していただけないでしょうか。
補足
特になし
