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

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

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

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

Java

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

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Q&A

解決済

1回答

4311閲覧

jsp間で画面遷移するときの条件の設定方法

icecleam

総合スコア46

JSP

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

Java

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

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

0グッド

0クリップ

投稿2020/09/19 17:26

以下のadd.jsp画面で商品をプルダウンから追加し、それをラジオボタンで選択し、その状態で削除ボタンを押下すると選択した商品をリストから削除していきます。
そこでリストが空になった時に初期画面(init.jsp)に遷移するようにしたいのですが、以下のコードだとうまく動きません。
問題の処理は[SalesSystemController.javaのremoveメソッド]だと思うので、そこの処理を載せておきます。。
すみませんが、宜しくお願いします。

SalesSystemController.javaのremoveメソッド

java

1else if(RecordManager.calTotal(RecordManager.getallList()) == 0){ 2 model.addAttribute("nameList", RecordManager.makeNameList()); 3 return "init";

SalesSystemController.java

java

1package jp.practice.sales; 2 3import javax.servlet.http.HttpServlet; 4import javax.servlet.http.HttpServletRequest; 5 6import org.springframework.stereotype.Controller; 7import org.springframework.ui.Model; 8import org.springframework.validation.BindingResult; 9import org.springframework.web.bind.annotation.RequestMapping; 10import org.springframework.web.bind.annotation.SessionAttributes; 11 12/** 13 * Handles requests for the application home page. 14 */ 15@Controller 16@RequestMapping(value = "/system") 17@SessionAttributes(types = SalesForm.class) 18public class SalesSystemController extends HttpServlet { 19 private static final String ERRMSG = "点数には1以上100以下の整数を入力してください。"; 20 private static final String ADDMSG = "明細に追加しました。"; 21 private static final String FIXMSG = "以下のように売上登録しました。"; 22 private static final String DELETE = "選択された明細行を削除しました。"; 23 private static final String ERRMSG2 = "明細行を選択して下さい。"; 24 25 /** 26 * 起動時および登録完了時に呼ばれる。初期画面を表示する。 27 * @param form フォームオブジェクト 28 * @param model モデルオブジェクト 29 * @return Viewとしてinit.jspを指定 30 */ 31 @RequestMapping(value = "/start") 32 public String init(SalesForm form, Model model) { 33 34 model.addAttribute("nameList", RecordManager.makeNameList()); 35 //model.addAttribute("nameList", RecordManager.makeNameList()); 36 //form.setGoodsName(RecordManager.getFirstPersonName()); 37 return "init"; 38 } 39 40 /** 41 * 初期画面から呼ばれる。選択した商品の明細追加画面を表示する。 42 * @param form フォームオブジェクト 43 * @param model モデルオブジェクト 44 * @return Viewとしてadd.jspを指定 45 */ 46 @RequestMapping(params = "add") 47 public String add(SalesForm form,BindingResult result, Model model,HttpServletRequest request) { 48 Item item = RecordManager.findItem(form.getGoodsName()); 49 RecordManager.setNewItem(new Item(item.getId(), form.getGoodsName(), item.getPrice(), form.getQuantity(), item.getSubtotal())); 50 Item newItem = RecordManager.getNewItem(); 51 int sb = newItem.getPrice() * newItem.getQuantity(); 52 newItem.setSubtotal(sb); 53 model.addAttribute("nameList", RecordManager.makeNameList()); 54 model.addAttribute("allList", RecordManager.getallList()); 55 if (result.hasErrors() || 1 > form.getQuantity() || form.getQuantity() > 100) { 56 model.addAttribute("total", RecordManager.calTotal(RecordManager.getallList())); 57 model.addAttribute("message", ERRMSG); 58 return "add"; 59 60 } else { 61 RecordManager.addToAllList(newItem); 62 model.addAttribute("total", RecordManager.calTotal(RecordManager.getallList())); 63 model.addAttribute("message2", ADDMSG); 64 return "add"; 65 } 66 //model.removeAttribute("SalesForm"); 67 //HttpSession session = request.getSession(true); 68 } 69 70 /** 71 * 細追加画面から呼ばれる。選択した商品を削除し明細追加画面を表示する。 72 * @param form フォームオブジェクト 73 * @param model モデルオブジェクト 74 * @return Viewとしてadd.jspを指定 75 */ 76 @RequestMapping(params = "remove") 77 public String remove(SalesForm form, BindingResult result, Model model, HttpServletRequest request) { 78 String num = null; 79 num = request.getParameter("radio"); 80 81 if (num != null){ 82 int number = Integer.parseInt(num); 83 RecordManager.removeToAllList(number); 84 model.addAttribute("message4", DELETE); 85 model.addAttribute("total", RecordManager.calTotal(RecordManager.getallList())); 86 }else if(RecordManager.calTotal(RecordManager.getallList()) == 0){ 87 model.addAttribute("nameList", RecordManager.makeNameList()); 88 return "init"; 89 90 } else { 91 model.addAttribute("message5", ERRMSG2); 92 } 93 model.addAttribute("total", RecordManager.calTotal(RecordManager.getallList())); 94 model.addAttribute("nameList", RecordManager.makeNameList()); 95 model.addAttribute("allList", RecordManager.getallList()); 96 return "add"; 97 } 98 99 /** 100 * 確認画面で登録を押した時に呼ばれる。データを登録して初期画面表示へ遷移する。 101 * @param form フォームオブジェクト 102 * @param model モデルオブジェクト 103 * @return initメソッドへのリンクを指定 104 */ 105 @RequestMapping(params = "firm") 106 public String firm(SalesForm form, Model model) { 107 long value = System.currentTimeMillis(); 108 Item item = RecordManager.findItem(form.getGoodsName()); 109 RecordManager.setNewItem(new Item(item.getId(), form.getGoodsName(), item.getPrice(), form.getQuantity(), item.getSubtotal())); 110 Item newItem = RecordManager.getNewItem(); 111 int sb = newItem.getPrice() * newItem.getQuantity(); 112 newItem.setSubtotal(sb); 113 model.addAttribute("salesid", value); 114 model.addAttribute("message3", FIXMSG); 115 model.addAttribute("total", RecordManager.calTotal(RecordManager.getallList())); 116 model.addAttribute("nameList", RecordManager.makeNameList()); 117 model.addAttribute("allList", RecordManager.getallList()); 118 return "fix"; 119 } 120}

add.jsp

jsp

1<%@ page session="false" language="java" 2 contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 3<%@page import="java.time.format.DateTimeFormatter"%> 4<%@ page import="java.time.LocalDate"%> 5<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 6<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%> 7<%@ page import="java.util.*"%> 8<%@ page import="java.time.*"%> 9<!DOCTYPE html> 10<html> 11<head> 12<link rel="stylesheet" type="text/css" 13 href="/sales/resources/css/common.css" /> 14<title>明細追加画面</title> 15</head> 16<body> 17 <form:form modelAttribute="salesForm" action="/sales/system" var="list"> 18 <div class="header"> 19 <span class="titleName">オンラインショップ</span> 20 <% 21 DateTimeFormatter format = DateTimeFormatter.ofPattern("MM月dd日(E)"); 22 %> 23 <span class="date"><%=format.format(LocalDate.now())%></span> 24 </div> 25 <div class="main"></div> 26 <div>明細追加画面</div> 27 商品: 28 <form:select path="goodsName" items="${nameList}" /> 29 <div> 30 点数: 31 <form:input path="quantity" items="${allList}" /> 32 </div> 33 <div> 34 <input type="submit" name="add" value="明細追加" /> 35 </div> 36 <div class="message"> 37 <font color="#ff0000"> <c:out value="${message}" /></font> <font 38 color="#1e90ff"> <c:out value="${message2}" /> 39 </font> <font color="#1e90ff"> <c:out value="${message4}" /> 40 </font><font color="#1e90ff"> <c:out value="${message5}" /> 41 </font> 42 </div> 43 44 <table border="1"> 45 <tr> 46 <th>削除</th> 47 <th>商品ID</th> 48 <th>商品名</th> 49 <th>単価</th> 50 <th>点数</th> 51 <th>小計</th> 52 </tr> 53 <c:forEach items="${allList}" var="item" varStatus="status"> 54 <tr class="even"> 55 <form:hidden path="quantity" /> 56 <td><input type="radio" name="radio" value="${status.index}" /></td> 57 <td><c:out value="${item.id}" /></td> 58 <td><c:out value="${item.name}" /></td> 59 <td><c:out value="${item.price}" /></td> 60 <td><c:out value="${item.quantity}" /></td> 61 <td><c:out value="${item.subtotal}" /></td> 62 </tr> 63 </c:forEach> 64 </table> 65 <div> 66 合計: 67 <c:out value="${total}" /> 6869 </div> 70 <input type="submit" name="firm" value="確定" /> 71 <input type="submit" name="remove" value="削除" /> 72 </form:form> 73</body> 74</html>

init.jsp

jsp

1<%@ page session="false" language="java" 2 contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 3<%@page import="java.time.format.DateTimeFormatter"%> 4<%@ page import="java.time.LocalDate"%> 5<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 6<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%> 7<%@ page import="java.util.*"%> 8<%@ page import="java.time.*"%> 9<!DOCTYPE html> 10<html> 11<head> 12<link rel="stylesheet" type="text/css" 13 href="/sales/resources/css/common.css" /> 14<title>売上システム(初期画面)</title> 15</head> 16<body> 17 <form:form modelAttribute="salesForm" action="/sales/system" var="list"> 18 <div class="header"> 19 <span class="titleName">オンラインショップ</span> 20 <% 21 DateTimeFormatter format = DateTimeFormatter.ofPattern("MM月dd日(E)"); 22 %> 23 <span class="date"><%=format.format(LocalDate.now())%></span> 24 </div> 25 <div class="main"></div> 26 <div>初期画面</div> 27 商品: 28 <form:select path="goodsName" items="${nameList}" /> 29 <div> 30 点数: 31 <form:input path="quantity" items="${allList}" /> 32 </div> 33 <input type="submit" name="add" value="明細追加" /> 34 </form:form> 35</body> 36</html>

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

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

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

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

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

guest

回答1

0

ベストアンサー

java

1if (num != null){ 2 int number = Integer.parseInt(num); 3} else if (RecordManager.calTotal(RecordManager.getallList()) == 0){ 4 model.addAttribute("nameList", RecordManager.makeNameList()); 5 return "init"; 6} else {

num が null になっていないと、else if に入りません。私が思うに、このControllerの実装はこうでしょう。

java

1 String num = request.getParameter("radio"); 2 if (num == null) { 3 model.addAttribute("message5", ERRMSG2); 4 model.addAttribute("total", RecordManager.calTotal(RecordManager.getallList())); 5 model.addAttribute("nameList", RecordManager.makeNameList()); 6 model.addAttribute("allList", RecordManager.getallList()); 7 return "add"; 8 } 9 10 int number = Integer.parseInt(num); 11 RecordManager.removeToAllList(number); 12 model.addAttribute("message4", DELETE); 13 model.addAttribute("total", RecordManager.calTotal(RecordManager.getallList())); 14 model.addAttribute("nameList", RecordManager.makeNameList()); 15 model.addAttribute("allList", RecordManager.getallList()); 16 17 if(RecordManager.calTotal(RecordManager.getallList()) == 0){ 18 return "init"; 19 } 20 21 return "add"; 22

余談ですが、ControllerでHttpServletRequestを受け取っていますが、SpringMVCを利用されているのですから、ラジオボタンの入力もSalesFormに追加するべきでしょう。

投稿2020/09/20 01:06

A-pZ

総合スコア12011

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

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

icecleam

2020/09/20 16:13

ありがとうございます。 上記のソースで実装ですることができました。 >SpringMVCを利用されているのですから、ラジオボタンの入力も>SalesFormに追加するべきでしょう。 こちらに関しては、以前もご指摘をいただいて@NotNullを使って、実装を試みたのですが、どうしてもエラーが出てしまい(インポートはしました)、現状はこちらのソースで実装させていただいています。 せっかくご指摘をいただいたのに申し訳ありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問