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が表示します。前の入力したデータではないです。どうしたらできますか?
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属性の値は、きちんと引用符(")で囲んでおきましょう。(単に忘れていただけだと思いますが、念のため。)
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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP php ログイン 1 2022/11/01 00:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
jspからServletを呼び、元のjsp...
-
JSPからJSPへ情報を渡せる?
-
eclipseで新規Tomcatプロジェク...
-
webアプリを作ってます。エラー...
-
WEB-INF直下のフォルダ
-
JSPでimportを行う時の、変数の...
-
jspでbeanを使いたいのです...
-
javaでカレンダー作成
-
三菱GOTの画面切り替えについて
-
ActiveWorkbook.Pathの一つ下の...
-
フォームで同じ複数のnameで違...
-
遷移元を判定したい!
-
Servletへフォームから配列を送...
-
VB6 開発環境のエディタに行...
-
ボタンが活性化の場合とは、ボ...
-
フォーム上で押されたボタンに...
-
javascriptでのログアウトボタン
-
HTMLのINPUTから画面表示
-
リクエストに応じたselectedの...
-
変数名とDBカラム名の関係性に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
jspからServletを呼び、元のjsp...
-
webアプリを作ってます。エラー...
-
JSPからJSPへ情報を渡せる?
-
jspでbeanを使いたいのです...
-
jsp:paramアクションタグで配列...
-
WEB-INF直下のフォルダ
-
1つのフォーム内容を1つのsubmi...
-
javascriptでformの送信後、値...
-
JSPの変数受け渡しについて教え...
-
Tomcatで開発したStrutsアプリ...
-
JSPでimportを行う時の、変数の...
-
JSP>errorPageで指定したページ...
-
servletからjspへの遷移時に文...
-
Servlet-JSP間のhidden要素での...
-
jspのクラスのコンパイルエラー
-
リンクの無効化/有効化 の切り...
-
検索後のページ再表示初期化
-
javaでカレンダー作成
-
strutsで、任意の画面からの任...
-
TOMCATで\\webapps\\ROOTフォル...
おすすめ情報