jspから別のjspへパラメータが送信できない

このQ&Aのポイント
  • jspから別のjspへパラメータが送信できない原因と解決方法を教えてください
  • Test.jspでデータを入力して送信ボタンを押すとTest_1.jspでnullが表示されます。前の入力したデータが表示されない問題の解決方法を教えてください
  • javaBeanを利用してjspを作成し、Test.jspからTest_1.jspにデータを送信する際にパラメータが正しく渡されない問題が発生しています。解決方法を教えてください
回答を見る
  • ベストアンサー

jspから別のjspへパラメータが送信できない

javaBeanを利用してjspを作成したけど Test.jspのソース <%@ page contentType="text/html; charset=Shift_JIS" %> <%@ page import="struts.*" %> <jsp:useBean id="formprocess" class= "struts.FormProcess" scope="application" /> <jsp:setProperty name="formprocess" property="*"/> <html> <head> <title>TEST</title> </head> <h2>情報の入力</h2> <form method="GET" action="/javaroad/jspdir/Test_1.jsp"> <p> 名前: <input type="text" name="name" size=30> <p> メールアドレス: <input type="text" name="mailaddress" size=30> <p> <input type="submit" value="送信"> </form> </center> </body> </html> Test_1.jspのソース <%@ page contentType="text/html; charset=Shift_JIS" %> <%@ page import="struts.*" %> <jsp:useBean id="formprocess" class= "struts.FormProcess" scope="application" /> <html> <head> <title>TEST</title> </head> <body> <p> 名前: <jsp:getProperty name="formprocess" property="name"/> <p> メールアドレス: <jsp:getProperty name="formprocess" property="mailaddress"/> </body> </html> Beanのソース package struts; public class FormProcess { String name; String mailaddress; public void setName(String name) { this.name = name; } public String getName() { return name; } public void setMailaddress(String mailaddress) { this.mailaddress = mailaddress; } public String getMailaddress() { return mailaddress; } } Test.jspでデータを入力して送信ボタンを押すとTest_1.jspではnullが表示します。前の入力したデータではないです。どうしたらできますか?

  • jch
  • お礼率14% (1/7)
  • Java
  • 回答数3
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

#2の修正では分かりづらいようでしたら、以下のようにする方法もあります。 Test.jspを、以下の2つのファイルTest.htmとTransfer.jspに分ける。 <!-- Test.htmのソース --> <html> <head> <title>TEST</title> </head> <body> <center> <h2>情報の入力</h2> <form method="GET" action="/javaroad/jspdir/Transfer.jsp"> <p> 名前: <input type="text" name="name" size="30"> </p> <p> メールアドレス: <input type="text" name="mailaddress" size="30"> </p> <input type="submit" value="送信"> </form> </center> </body> </html> <!-- Transfer.jspのソース --> <%@ page contentType="text/html; charset=Shift_JIS" %> <%@ page import="struts.*" %> <jsp:useBean id="formprocess" class= "struts.FormProcess" scope="application" /> <jsp:setProperty name="formprocess" property="*"/> <jsp:forward page="./Test_1.jsp" /> このようにする事で、Test.htmから送信されたパラメータがTransfer.jspヘ行き、そこでBeanにsetされた後、すぐにTest_1.jspに遷移する、といった感じになります。(ただ、このようにすると、<jsp:forward>アクションが必要になってきたりするので、それならば、やはり#2のように、Transfer.jspの部分をTest_1.jspの上の方に記述した方がいいと思うのですが…。) 質問の中にあったTest.jspでは、なぜいけなかったのかというと、このjspファイルを実行する時点では、まだ「名前:」や「メールアドレス:」のテキストフィールド内に、どのようなデータが入力されているのか分からないために、Beanにsetしようにもできないわけですね。だから、<jsp:setProperty>アクションなどは、「送信」ボタンを押した後に遷移する画面上で、処理するようにしておかないといけない、というわけです。 その他にも、気付いた点をいくつか。 ・Beanのソースについては、java.io.Serializableインターフェイスをインプリメントしておきましょう。 ・Test.jspについて、<input>の中のsize属性の値は、きちんと引用符(")で囲んでおきましょう。(単に忘れていただけだと思いますが、念のため。)

jch
質問者

お礼

ありがとうございます。 うまく動きました、

その他の回答 (2)

回答No.2

自分の思い描いている通りに動作させたいのであれば、以下のように修正します。 Test.jspの上の方にある<jsp:setProperty>アクションを、Test_1.jspの<jsp:useBean>アクションと<html>タグの間に移動する。 本当は以上だけで良いのですが、気付いた点をいくらか。 ・Beanのソース内に、引数を持たないpublicなコンストラクタがない。 ・同じく、Beanのソース内において、フィールドnameとmailaddressは、プロパティとして使用されているのだから、private修飾子が必要。 ・Test.jspやTest_1.jspにおいて、<p>の終了タグがない。

回答No.1

Test.jspの[送信]ボタンで直接Test_1.jspにGET要求出してるからですね。 このときはまだ誰もFormProcessクラスのインスタンスを生成していないので、 Test_1.jspが表示時にインスタンスを生成します。 ↑にはもちろんTest.jspで入力された値がセットされているわけないので、 getメソッドを呼んでもnullが返ります。 単にTest.jspで入力した文字を表示したいだけなら、 Test_1.jspでリクエストから値を取得して表示すればできるでしょう。 (FormProcessクラス使ってないですけど。(笑)) っていうかStruts?を使っているのなら、Strutsのお約束に従った方がいいのでは…。 その他気になったのは Test.jsp ・<body>の開始タグがない。 ・<center>の開始タグがない。 くらいですかね。

関連するQ&A

  • jsp から servlet に

    パラメータをJSPからServlet に渡す所で、どうしても、null になってしまします‥。 主要な部分だけ書きます。 --jsp-- <jsp:useBean id="beanId" class="Bean" scope="request" /> <form method="POST" action="servlet"> <input type="submit" value="送信"> <input type="text" size="10" name="name"> --servlet-- import Bean; Bean bean = (Bean)request.getAttribute( "beanId" ); // ↑ここが、nullになってしまう。 --Bean-- public String getName() { return name; } public void setName( String name ) { this.name = name; } 考え方が違ってるかも知れないのですが‥。 よろしくお願いします。

    • ベストアンサー
    • Java
  • JSPのエラー。

    以下のjspファイルでコンパイルエラーが出ます。 これはログインの処理の二つ目のjspファイルで、一つ目のファイルではhtmlのフォームで、このファイルにpostしています。 mディレクトリにuserクラスを作ってあり、loginメソッドで成功すればtrueが返ってきます。 ブラウザに表示されるエラーの一行目は org.apache.jasper.JasperException: /login2.jsp(3,27) &lt;jsp:useBean タグが終了していません と表示されます。 よろしくお願いします。 <%@page contentType="text/html;charset=Windows-31J"%> <%@page import="m.user,javax.sql.*,java.sql.*"%> <jsp:useBean class="m.user" id="user" scope="session"/> <html> <head><title>ログイン</title></head> <body> <% String strLoginName = request.getParameter("login_name");/*フォームからの受け取り*/ String strPassword = request.getParameter("password"); String strResult; boolean blResult = user.login(strLoginName,strPassword); if(blResult){ strResult = "ログインしました。"; }else{ strResult = "失敗です。"; }%> <%=strResult%> </body> </html>

    • ベストアンサー
    • Java
  • JSPで、PG上のstrutsオブジェクトについて

    動作環境 OS:WindowsXP Home Edition SP3 Browser:IE8 OpenSoftWare:Tomcat6.0.29 Framework:Struts2.2.1 Tool:Eclipse3.2.0 JavaPGで、out.println関数を使用して、strutsのオブジェクト書いてもブラウザ上で出力されません。 直接strutsタグで、書くとブラウザ上に正常に表示されます。 Java側で、対応されていないのでしょうか? どなたか、ご指導願います。 ■事象例 1.「a.jsp」実行 <%@ page contentType="text/html; charset=Shift_JIS"%> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>Test</title> </head> <body> <s:form align="center" action="Test" theme="simple"> <% String strtest = "#{'1':'1','2':'2'}"; out.println("<s:select name=\"cbotest\" list=\"#{'1':'1','2':'2'}\"/>"); %> </s:form> </body> </html> 2.「b.jsp」実行 <%@ page contentType="text/html; charset=Shift_JIS"%> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>Test</title> </head> <body> <s:form align="center" action="Test" theme="simple"> <s:select name="cbotest" list="#{'1':'1','2':'2'}"/> </s:form> </body> </html> 3.IE8上の表示(画像添付参照) 1.「a.jsp」結果 何も出力されません。 2.「b.jsp」結果 [1[▼]] [1■■] [2   ]

    • ベストアンサー
    • Java
  • JSPでの文字化け

    こんにちは。 今JAVAを勉強中でJSPファイルを作成しています。 test.jsp <%@ page language="java" contentType="text/html; charset=Windows-31J" pageEncoding="Windows-31J"%> <HTML> <HEAD><TITLE>文字表示テスト</TITLE></HEAD> <BODY> <% String text = request.getParameter("text"); if (text != null) { if (!text.equals("")) { out.println("画面からの文字<BR>"); out.println(text); } } %> <FORM NAME="testForm" METHOD="post" ACTION="test.jsp"> <TEXTAREA NAME="text"></TEXTAREA> <INPUT TYPE="submit" VALUE="送信"> </FORM> </BODY> </HTML> Windowsで上のプログラムを実行すると問題なく表示されますが Linuxサーバで実行すると???となってしまいます。

    • ベストアンサー
    • Java
  • <bean:write.../>がエラーを出す

    のですが原因が分かりません。 したのソースでコメントアウトしたものが動かないのです。 コメントアウトしていないものは動いています。 何が悪いのでしょうか? よろしくお願いします。 gomi.jsp: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="/WEB-INF/tld/struts-bean.tld" prefix="bean"%> <%@ page isELIgnored="false"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Java JakartaStruts</title> </head> <body> <jsp:useBean id="gomiBean" class="gomi.GomiBean" scope="request" /> <jsp:getProperty property="gomiInt" name="gomiBean"/><br/> ${gomiBean.gomiInt}<br/> <%-- <p>GomiBean gomiInt : <bean:write name="gomiBean" scope="request" property="gomiInt" /></p> --%> </body> </html>

  • JSPにおけるPageディレクティブ記述

    こんにちは、Strutsを勉強しているものです。 ユーザが入力したID, パスワードをフォワード先のJSPで表示するといった簡単なアプリーションを作成していますが、JSP表示時に500エラーとなってしまいます。エラー理由としてpageタグが終了していないことがあげられています。しかし、通常JSPで記述するpageディレクティブには閉じるタグは記述不要と考えています。どのようにすればこのエラーを回避できるのでしょうか。 ▽JSPソース <%@ page contentType="text/html"; charset="Shift_JIS" %> <html> <head> <title>Login Result</title> </head> <body> <%= (String)request.getAttribute("message") %> </body> </html> ※バージョン情報 Tomcat 5.5 JDK 1.5 Struts 1.2.4

    • ベストアンサー
    • Java
  • <!DOCTYPE HTML PUBLIC "-//W3C//DTD

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>入力ページ</title> </head> <body> <p>-- 入力ページ --</p> <p><form action="test2.jsp"> ID: <input type="text" name="uid" size10><br> お名前: <input type="text" name="name" size=32><br> 生年月日: <input type="text" name="money" size=20><br> <br> <input type="submit" value="OK"> </form></p> </body> </html> ------------------------------------------------------- test2.jsp <%@ page contentType="text/html; charset=euc-jp" %> <% // ユーザーからの入力を出力する // パラメータを取得 String uid = request.getParameter("uid"); String name = request.getParameter("name"); String money = request.getParameter("money"); // 文字コードの変換 //uid = new String(uid.getBytes("8859_1"), "EUC_JP"); name = new String(name.getBytes("8859_1"), "EUC_JP"); money = new String(money.getBytes("8859_1"), "EUC_JP"); %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head><title>ユーザーからの入力を出力する</title></head> <body> <p>-- ユーザーからの入力を出力する --</p> <p><ul> <li>ID: <%= uid %> <li>お名前: <%= name %> <li>生年月日: <%= money %> </ul></p> </body> </html> htmlの入力フォームからjspを呼んで表示させるだけなのですが、入力して「OK」をおすと You don't have permission to access /~.........../test2.jsp on this server. と出るのですが、何が原因なのでしょう。教えてください。

  • JSPのエラー画面(error.jsp)に遷移(移動)しない

    フォームを設定したlogin.htmlから情報を受け取るlogin.jspで検証をして、間違ったid番号を入力した場合はerror.jspに移動させたいのですが、遷移せず、「HTTP 500 - 内部サーバー エラー」となります。 改善のご教示お願い致します。 [login.html] <html><head><title>login.html</title></head> <body><h1>ログイン</h1><hr><br> <form method="post" action="/webapp/JSPtest/login.jsp"> <table> <tr> <td>ID:</td> <td><input type="text" name="id"></td> </tr> </table> <br><br> <input type="submit" value="送信"> <input type="reset" value="キャンセル"> </form> </body> </html> [login.jsp] <%@ page contentType="text/html;charset=Shift_JIS" pageEncoding="Shift_JIS" %> <%@ page errorPage="error.jsp" %> <html><head><title>login.jsp</title></head> <body> <% String id = "2007"; String data = request.getParameter("id"); StringBuffer temp = new StringBuffer(); if(!id.equals(data)) temp.append("数値間違い<BR>"); if(temp.length() != 0){ throw new Exception(temp.toString()); } %> <h1>こんにちは<%= data %>様</h1> <h1><%= temp.length() %> </h1> </body></html> [error.jsp] <%@page contentType="text/html;charset=Shift_JIS" pageEncoding="Shift_JIS" %> <%@ page isErrorPage="true" %> <html><head><title>error.jsp</title></head> <body> エラーメッセージ<br> <%= exception.getMessage() %> </body></html>

  • JSPにおける引数の受け渡し

    こんにちは. 今JSPのプログラムを作っているのですが,引数を送る場面で困っています. test2.jspにおいて,タイプはちゃんと表示されているのですが,IDとパスワードはnullになっています. もし宜しければ,どこが間違っているのかお教えいただけないでしょうか?よろしくお願いします. 【test.jsp】 ~省略~ <%String type="aaa";%> <?xml version="1.0" encoding="Shift-JIS" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja"> <head> ~省略~ </head> <body> <div class="abc"> <h1>タイトル</h1> <form action="test2.jsp" method="post"> <p> <table> <tr> <td>ID</td> <td><input type="text" name="user_id" /></td> </tr> <tr> <td>パスワード</td> <td><input type="password" name="user_pass" /></td> </tr> </table> <br /> <input type="button" value="ログイン" onclick="test('test2.jsp?type=<%=type%>')" /> </p> </form> </div> <script type="text/javascript" src="test.js"></script> </body> </html> 【test2.jsp】 ~省略~ <% String type=request.getParameter("type"); String user_id=request.getParameter("user_id"); String user_pass=request.getParameter("user_pass"); %> ~省略~ <h1>タイトル2</h1> <p> <table> <tr> <td>ID</td> <td><%=user_id%></td> </tr> <tr> <td>パスワード</td> <td><%=user_pass%></td> </tr> <tr> <td>タイプ</td> <td><%=type%></td> </tr> </table> </p>

    • ベストアンサー
    • HTML
  • 送信フォームからjspページに値を飛ばしたい

    jspページでhtml,javaScriptを用いてフォームの入力制限を行い、FMenu.jspという、jspページにフォームの値を送信したいのですが、うまくいきません。どなたか教えてください。 Form.jspファイル(中略) <%@ page language="java" contentType="text/html; charset=windows-31j" pageEncoding="windows-31j"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head><title>フォーム入力画面</title></head> <body><center> <script type="text/javascript"> <!-- function checkForm(){ var a,b; NCheck(); if(a==true){ WCount(); } ACheck(); if(b==true){ WCount(); document.FM[0].submit(); document.FM[1].submit(); } } (中略) //--></script> <form action="Menu.jsp" method="POST" name="FM"> ID<input type="text" name="ID" size="20" maxlength="4"><br> パスワード<input type="text" name="PASS" size="20" maxlength="4"> <input type="button" value="OK" onClick="return checkForm();"> (中略)

専門家に質問してみよう