お世話になっております。
Javaを勉強中の者です。
サーブレットとJSPでラジオボタンを選択する画面を作っています。
ラジオボタンの選択によって、結果画面1、結果画面2に遷移させたいのですが、うまくいきません。
どこを直せばよいでしょうか?
個人的にはサーブレットのif文のequalsメソッドで比較する文字列が間違っているように思います。
発生している問題・エラーメッセージ
ブラウザでinput.jspを実行時にHTTPステータス500が出ます
ソースコード
Java
1 <サーブレット> 2protected void doPost(HttpServletRequest request, HttpServletResponse response) 3 throws ServletException, IOException { 4 5 //エンコード方式の指定 6 response.setContentType("text/html; charset=UTF8"); 7 // パラメータのエンコード方式の指定 8 request.setCharacterEncoding("UTF-8"); 9 10 String r1=request.getParameter("radioB"); 11 String r2=request.getParameter("radioB"); 12 String t=request.getParameter("freeText"); 13 14 System.out.println(r1); 15 System.out.println(r2); 16 System.out.println(t); 17 18 request.setAttribute("servlet","これはサーブレットからのメッセージです。"); 19 20 //結果1のラジオボタンをn1、結果2のラジオボタンをn2とする 21 String n1=request.getParameter("結果画面1"); 22 String n2=request.getParameter("結果画面2"); 23 24 String path="";//パスを格納する関数path 25 26 if (r1.equals(n1)){//結果1が選択されているとき 27 path="/jsp/result1.jsp"; 28 29 }else if(n2.equals(n2)){//結果2が選択されているとき 30 path="/jsp/result2.jsp"; 31 } 32 33 RequestDispatcher dispatcher = request.getRequestDispatcher(path); 34 dispatcher.forward(request, response); 35 } 36} 37 38// <input.jsp> 39 40<%@ page language="java" contentType="text/html; charset=UTF-8" 41 pageEncoding="UTF-8"%> 42<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 43<html> 44<head> 45<title>入力画面</title> 46</head> 47<body> 48 <form method="post" action="/kadaiWeb1/InputServlet"> 49 <input type="radio" name="radioB" value="結果画面1" checked="checked">結果画面1<br> 50 <input type="radio" name="radioB" value="結果画面2">結果画面2<br> 51 <br> <input type="text" name="freeText" value="自由入力"><br> 52 <br> <input type="submit" name="display" value="表示"> 53 </form> 54</body> 55</html> 56 57 58 59//結果画面1を表示するresult1.jsp (結果画面2はtitleだけ違うため略) 60 61<%@ page language="java" contentType="text/html; charset=UTF-8" 62 pageEncoding="UTF-8"%> 63<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 64 65<html> 66<head> 67<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 68<title>結果画面1</title> 69</head> 70<body> 71 <% String s = (String) request.getAttribute("servlet"); %> 72 <% String t =request.getParameter("freeText"); %> 73 74 <%=s%> 75 <br> テキストボックスの内容: 76 <%=t%> 77 78</body> 79</html> 80 81
試したこと
if (n1=!null){//結果1が選択されているとき path="/jsp/result1.jsp"; }else {//結果2が選択されているとき path="/jsp/result2.jsp"; }
サーブレットのif文の部分を上記のコードにすると、result1.jsp"にしか遷移しませんでした。
補足情報(FW/ツールのバージョンなど)
Java
1String n1=request.getParameter("結果画面1"); 2 3 String path="";//パスを格納する関数path 4 5 if (r1.equals(n1)){//結果1が選択されているとき 6 path="/jsp/result1.jsp"; 7 8 }else {//結果2が選択されているとき 9 path="/jsp/result2.jsp"; 10 } 11 12 RequestDispatcher dispatcher = request.getRequestDispatcher(path); 13 dispatcher.forward(request, response); 14 } 15} 16 17500エラーが消えてからif文を上記のように書き換えてみると、今度はresult2.jspにしか遷移しなくなりました。。 18引き続き何卒お願いします。
回答1件
あなたの回答
tips
プレビュー