実現したいこと
Main.javaクラス内のdoPostメソッドで、if(text!=null&&text.length()!=){処理内容}
else{ request.setAttribute("errorMsg","つぶやきが入力されていません");}
最初のif文ではフォームを入力された時、入力された文字列をint型にしてフォワードしてJSPファイルに送るという処理を
else文ではそのフォームが入力されなかった時の処理を書いています
そしてリクエストスコープに保存したものをJspファイルのほうでerrorMsgとして出力
発生している問題・分からないこと
画面の表示やフォーム入力すると入力が格納されたりとほかの処理は機能しているが、空のフォームを送っても上記のような例外が出力されず表示がリセットされる
エラーメッセージ
error
1エラーメッセージはなし
該当のソースコード
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="model.User ,model.Mutter,java.util.List"%> <% User loginUser = (User) session.getAttribute("loginUser"); List<Mutter> mutterList=(List<Mutter>)application.getAttribute("mutterList"); String errorMsg=(String)request.getAttribute("errorMsg"); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>どこつぶ</title> </head> <body> <h1>どこつぶメイン</h1> <p> <%=loginUser.getName() %>さん ログイン中 <a href="Logout">ログアウト</a> </p> <p><a href="Main">更新</a></p> <form action="Main"method="post"> <input type="text" name="text"> <input type="submit" value="つぶやく"> </form> <% if(errorMsg !=null) {%> <p><%= errorMsg %></p> <%} %> <%for (Mutter mutter:mutterList){%> <p><%=mutter.getUserName() %>:<%=mutter.getText() %></p> <%} %> </body> </html>
Main.java
1package servlet; 2 3import java.io.IOException; 4import java.util.ArrayList; 5import java.util.List; 6 7import jakarta.servlet.RequestDispatcher; 8import jakarta.servlet.ServletContext; 9import jakarta.servlet.ServletException; 10import jakarta.servlet.annotation.WebServlet; 11import jakarta.servlet.http.HttpServlet; 12import jakarta.servlet.http.HttpServletRequest; 13import jakarta.servlet.http.HttpServletResponse; 14import jakarta.servlet.http.HttpSession; 15 16import model.Mutter; 17import model.PostMutterLogic; 18import model.User; 19 20/** 21 * Servlet implementation class Main 22 */ 23@WebServlet("/Main")//つぶやきリクエストのコントローラ 24public class Main extends HttpServlet { 25 private static final long serialVersionUID = 1L; 26 27 /** 28 * @see HttpServlet#HttpServlet() 29 */ 30 public Main() { 31 super(); 32 // TODO Auto-generated constructor stub 33 } 34 35 /** 36 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 37 */ 38 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 39 40 41 ServletContext application =this.getServletContext(); 42 43 44 45 46 47 List<Mutter>mutterList= 48 (List<Mutter>)application.getAttribute("mutterList"); 49 50 if(mutterList==null) { 51 52 mutterList=new ArrayList<>(); 53 54 application.setAttribute("mutterList",mutterList); 55 56 57 } 58 59 HttpSession session=request.getSession(); 60 61 User loginUser=(User)session.getAttribute("loginUser");//sessionスコープからloginUserインスタンスを取得 62 63 if(loginUser==null) { 64 65 response.sendRedirect("index.jsp"); //Beansのインスタンス(loginUser)が入っていないと、入力画面(index.jsp)に戻る 66 67 }else { 68 69 70 RequestDispatcher dispatcher= 71 request.getRequestDispatcher("WEB-INF/main.jsp"); //Beansのインスタンス(loginUser)が入ってると、main画面(main.jsp)に飛ぶ 72 73 dispatcher.forward(request,response); 74 } 75 76 77 } 78 79 /** 80 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 81 */ 82 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 83 84 request.setCharacterEncoding("UTF-8"); 85 86 String text=request.getParameter("text"); 87 88 if(text!=null&&text.length()!=0) 89 { 90 91 ServletContext application=this.getServletContext();//requsstServletContextではない 92 93 List<Mutter> mutterList= 94 95 (List<Mutter>)application.getAttribute("mutterList"); 96 97 HttpSession session=request.getSession(); 98 User loginUser=(User)session.getAttribute("loginUser"); 99 100 Mutter mutter =new Mutter(loginUser.getName(),text); 101 102 103 104 PostMutterLogic postMutterLogic=new PostMutterLogic(); 105 106 postMutterLogic.execute(mutter,mutterList); 107 108 109 application.setAttribute("mutterList", mutterList); 110 111 }else { 112 113 //エラーメッセージをリクエストスコープに保存 114 115 request.setAttribute("errorMsg", 116 117 "つぶやきが入力されていません"); 118 119 } 120 121 122 RequestDispatcher dispatcher= 123 request.getRequestDispatcher("WEB-INF/main.jsp"); 124 125 dispatcher.forward(request,response); 126 127 } 128 129 130 131 } 132 133 134
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
jspファイルにてerrorMsgをif文の外で記入してみたがnullが出力された
補足
環境>
エクリプス
Version: 2024-12 (4.34.0)
Build id: 20241128-0757
java version "23.0.2" 2025-01-21
Java(TM) SE Runtime Environment (build 23.0.2+7-58)
Java HotSpot(TM) 64-Bit Server VM (build 23.0.2+7-58, mixed mode, sharing)
TomCat10 java21
回答1件
あなたの回答
tips
プレビュー