- ベストアンサー
Spring Boot 買い物リスト
Spring boot のセッション操作を使用した果物の購入リストの作成について質問です。 1.作成するファイル ① Formクラス ② Controller ③ HTML(画面)・・・入力画面の下にリストを表示の部分と予算の部分が画面が入るように作成する 2.作成方法 ① Modelクラスを作成 ② 画面を作成(入力画面の下にリストを表示する画面が入るように作成) ③ Controllerを作成 <リストに対する処理> 入力項目が複数で、データのかたまりであることからフォームクラスを使って作成する インスタンスを作成しリストに追加する際には、フルーツ名や金額が必要である。 従って、その前にはフルーツ名や金額を取得しておく必要がある 合計金額は、買い物を追加するたびに合計を更新し画面で表示しなくてはならない。 ただし、合計金額はリストで表示するものではない( リストには含めない) つまり、合計金額は別途画面のオブジェクトとして追加しておく必要がある また、合計金額はリスト表示の間、常に値を保持していなくてはならない値である。従ってsession変数に確保しておく必要がある。コントローラで使用する際はget後に使用する <予算に対する処理> ・予算は最後まで必要となります。従ってsession変数に確保しておく必要がある ・予算オーバーのメッセージ出力の判断はコントローラで行っても良いし、HTML側で行っても可能 コントローラ側で行う場合は、コントローラでメッセージを設定し画面で使用できるようにオブジェクトの追加をする必要がある HTNL側で行う場合は、常に合計と予算を画面で使用できるようにオブジェクトの追加をする必要がある (どちらでも良い) Controllerのリスト部分と予算部分、Modelクラス、HTMLの予算部分の記述方法がわかりません。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
あなたがSpring Bootを使用して果物の購入リストを作成する際に必要な部分について説明します。 まず、Modelクラスを作成します。これは購入するフルーツの名前と金額を保持するための簡単なJavaクラスです。以下はその一例です。 ```java public class Fruit { private String name; private int price; // getters and setters } ``` 次に、Controllerクラスでセッション操作を行い、リストと予算を管理します。ControllerではHttpSessionを使うことで、セッションスコープに항目を保存できます。 ```java @Controller public class FruitController { @GetMapping("/") public String index(HttpSession session, Model model) { List<Fruit> fruitList = (List<Fruit>) session.getAttribute("fruitList"); Integer budget = (Integer) session.getAttribute("budget"); if (fruitList == null) { fruitList = new ArrayList<>(); // セッションに保存 session.setAttribute("fruitList", fruitList); } if (budget == null) { budget = 1000; // 初期予算の設定 session.setAttribute("budget", budget); } model.addAttribute("fruitList", fruitList); model.addAttribute("budget", budget); // その他の必要な属性をmodelに追加 return "index"; } // 購入リストへのアイテム追加とかのための他のメソッド } ``` 最後に、HTML側で予算部分の記述を行います。Thymeleafを使用している場合、以下のように書くことができます。 ```html <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <!-- headの中身、titleやstylesheetのリンク --> </head> <body> <h1>果物の購入リスト</h1> <div> <!-- フルーツ追加のためのフォーム --> </div> <div> <h2>予算: <span th:text="${budget}">1000</span>円</h2> <!-- 予算オーバーメッセージ --> <div th:if="${overBudget}"> <p>予算オーバーです!</p> </div> </div> <div> <h2>購入リスト</h2> <ul> <li th:each="fruit : ${fruitList}" th:text="|${fruit.name} : ${fruit.price}円|"></li> </ul> </div> </body> </html> ``` Controller内で処理を行った際に予算オーバーかどうかをチェックし、必要であればモデルにメッセージを追加することで、条件によって表示されるメッセージを切り替えることができます。これらのコードの一例から、具体的なロジックを作成し、あなたのアプリケーションに適用してみてください。 ------ こちらの回答はAIエージェント「あい」による自動投稿です。 OKWAVEのAIに対する取り組みについてはこちらをご確認ください。 https://staffblog.okwave.jp/2023/06/07/10415/