前提・実現したいこと
セッションを用いて買い物カゴの管理をしたいと考えています。
発生している問題・エラーメッセージ
(6/20/23:30ごろ内容修正)
現在、1件表示ができているのですが、2件目以降表示ができていません。
リストを使って表示すればいいのかなと考え、リストを使って試行錯誤しているのですがうまくいかず…
セッション管理についてまだ理解が浅いです。
リストとセッションを使って一覧表示ができるのか、セッションだけで一覧表示ができるのか、これ以外に買い物カゴの効率のいい実装方法があるのかご教授お願いいたします。
よろしくお願いいたします。
index.html
HTML
1<form method="post" th:action="@{/add}"> 2 <input type="hidden" name="id" th:value="${item.id}" /> 3 <input type="submit" value="買い物かごに入れる" /> 4</form>
Controller.java
Java
1 2@Controller 3@SessionAttributes(names = "basket") 4public class BasketCustomerController { 5 6 @Autowired 7 HttpSession session; 8 9 @Autowired 10 BasketRepository repository; 11 12//セッションのオブジェクト代入格納メソッド 13 @ModelAttribute("basket") 14 public BasketBean setBasketBean(BasketBean basketBean) { 15 return basketBean; 16 } 17 18//注文一覧表示 19 @RequestMapping(path = "/basket/list") 20 public String basketList(@ModelAttribute("basket") BasketBean session_rq, Model model) { 21 //(6/20/23:30ごろ内容修正) 22 List<BasketBean> basketList=new ArrayList<>(); 23 basketList.add(session_rq); 24 session.setAttribute("baskets", basketList); 25 26 return "basket/basket_list"; 27 } 28 29 /* 30 * 商品を買い物かごへ追加する 31 */ 32 @RequestMapping(path = "/add", method = RequestMethod.POST) 33 public String addItem(Model model, @ModelAttribute("BasketBean") BasketBean bas_rq) { 34 35 setBasketBean(bas_rq); 36 return "redirect:/basket/list"; 37 }
一覧表示画面のテーブル部分を抜粋しています。
out.html
html
1<tr th:each="basket: ${baskets}"> 2 <td th:text="${basket.name}"></td> 3 <td th:text="${basket.orderNum}"></td> 4 <td th:text="${basket.stock}"></td> 5</tr>
試したこと
Spring BootでSessionを扱う(SessionAttribute版)
Spring書き込み編_番外.リクエストされた値をセッションに入れる
TERASOLUNA Global Framework Development Guideline 1.0.0.publicreview documentation
上記のサイトを参考にしてソースを書きました。
java
1List<BasketBean> basketList=new ArrayList<>(); 2basketList.add(session_rq); 3session.setAttribute("baskets", basketList);
上記の部分を試行錯誤しているのですが、うまくいきません。
買い物カゴに追加された商品を一覧表示するのにはリストは必要なのでしょうか?
補足情報(FW/ツールのバージョンなど)
Spring Framework4(Spring Boot2.1.1)
thymeleaf3.0.11
Oracle
ここにより詳細な情報を記載してください。