サーブレットを使用して画面Aでリストで選択した項目を別のページ画面Bで出力する画面を作成しています。
今、詰まっているのですが、その画面Bから画面Aに戻るときに画面Bで表示されている項目が画面Aで選択されている状態で表示して、リセットボタンを押すと、デフォルト(奈良)に戻るようにしたいのですが、以下のプログラムですと、セッションで値を受け取っているとリセットを押すとデフォルトにはならずに、以前選んでいた項目が表示されてしまいます。解決法をご教授ください。以下のソースは画面Aを表示するためのものです。
HttpSession hs=request.getSession(true);
String city = (String)hs.getAttribute("city");
String nara="";String osaka ="";String kyoto ="";String kobe ="";
if(city != null){
if(city.equals("osaka")){osaka = "selected";
}else if(city.equals("kyoto")){kyoto = "selected";
}else if(city.equals("kobe")){kobe = "selected";
}
}
out.println("<html><head><title>Sessionを使う</title></head><body><br><br><center><br>");
out.println("<form action=response.encodeURL(\"TestSession\") method=POST>");
out.println("<select name=city");
out.println("<option value=nara "+ nara +">奈良");
out.println("<option value=osaka "+ osaka +">大阪");
out.println("<option value=kyoto "+ kyoto +">京都");
out.println("<option value=kobe "+ kobe +">神戸");
out.println("</select>");
out.println("<input type=submit value=送信>");
out.println("<input type=reset value=リセット></form>");
out.println("</center></body></html>");
}
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
まず、<input type="reset">の機能について、理解される必要があると思います。
<input type="reset">は、「フォームの内容を、HTMLがロードされた状態に戻す」機能を果たすボタンです。
JSPでは、JSPが処理され、出力された後の状態のHTMLに戻るということです。
つまりご質問のコードでいうと、画面表示がすべて終わった後、ブラウザでソースコードを開いて「selected」になっている項目が「HTMLがロードされた状態」であり、resetボタンを押すとそこへ戻ります。
コードではセッションの値に基づいてselectedなものを決めているため、大阪がselectedとして出力されれば、resetボタンを押すと大阪に戻ります。
<input type="reset">を使ってリセットしようとする限りは、これはどうしようもありません。
解決するには、既にご回答があるようにJavaScriptを使うか、いったんリクエストをとばすしかないでしょう。
No.2
- 回答日時:
戻るという動作が必要であれば、A画面とB画面の間もう一つの画面を入れたらどうでしょうか(確認のため)セッションへの保存は確認画面で行えばうまくいくと思いますが。
。。No.1
- 回答日時:
(1)JavaScript を使ってクライアント側で処理する
<head></head> の中に以下を追加します。
out.println("<script type=text/javascript>");
out.println("function reset(){");
out.println("document.forms[0].city.options[0].selected=true }");
out.println("</script>");
あと、リセットボタンは以下のようにします。
out.println("<input type=button value=リセット onclick=reset()></form>");
ただ、この方法はあまり良いとはいえません。
スクリプト言語を書く場合は、せめてJSP化しましょう。
(2)リセットボタンを押したときにsubmit する。
そして、その場合にHTMLの出力内容を変えるのです。
out.println("<option selected value=nara "+ nara +">奈良");
とすればOKです。
欠点は、サーバーに一度送信する為、軽快ではないという点です。
ほかにもやりようによっては色々工夫できると思いますので、研究してみてはいかがでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- PHP php ログイン 1 2022/11/01 00:24
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語のポインターに関する警告
-
JSPやサーブレットでSystem.out...
-
[JAVA]try 内の変数を外で!?
-
改行の判定方法
-
「続行するには何かキーを押し...
-
曜日の取得方法を教えて下さい!
-
JAVAのエラーの意味が分かりま...
-
JAVA 文字色変更
-
Javaでカレントディレクトリを...
-
java教えてください。
-
EclipseでJava
-
構文解析中にファイルの終わり...
-
掛け算九九の表示の仕方。
-
LC発振回路-ループ利得
-
JavaにはなぜGO TO ...
-
java Calendarクラス
-
JAVAのDouble型の小数点以下の...
-
JAVAで素数判定
-
エクセルマクロ文で、赤文字セ...
-
vb6 オブジェクトライブラリは...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語のポインターに関する警告
-
[JAVA]try 内の変数を外で!?
-
JSPやサーブレットでSystem.out...
-
JAVAのDouble型の小数点以下の...
-
EclipseでJava
-
「続行するには何かキーを押し...
-
文字列の引き算
-
java シンボルが見つかりません...
-
JAVA 文字色変更
-
改行の判定方法
-
JAVAのエラーの意味が分かりま...
-
Javaのコマンドライン引数を使...
-
java教えてください。
-
曜日の取得方法を教えて下さい!
-
JavaにはなぜGO TO ...
-
Javaでカレントディレクトリを...
-
構文解析中にファイルの終わり...
-
JAVA 三角形の判定
-
複数行キーボード入力した後に...
-
printfの%fにおいて教本どおり...
おすすめ情報