JSP+Servlet+Beanで作ってます。
画面には、テキストとボタンが配置してます。
Aボタンクリックで、テキストに何にも
値が入ってない場合は別のHTMLに移動し、
何か値が入っている場合は
テキストをクリアする処理をしたいのですが
・・・
<INPUT TYPE = "button" NAME="RTN" VALUE ="戻る"
onClick= <% if(wk.getRtn_tmp()==1){ out.print
("location='http://localhost:8080/form.html'");}
else{out.print
("location='http://localhost:8080/servlet/jyohoya.kanri_Srv'")
;} %>>
上記のように、JSPで判断させようと
しています。
Beanでrtn_tmpというプロパティを
セットしておいて、JSPのIF文で判断させようと思ったんですが・・・
<INPUT TYPE = "submit"・・・>にしておいて、Servletで
Aボタンの処理判断をしないといけないのでしょうか。
しかし、JSPのonclick以下で判断ができても
よさそうなのですが。。。指定の仕方がおかしいのかもしれません。
No.5ベストアンサー
- 回答日時:
やっぱり私はkanayuさんが何を疑問とされてるのか、わかってないみたいです。
単純にこれだと上手く出来ないとおっしゃってるんですよね?
>Beanがテキスト入力の有無を判断した後、
>このServletでHTMLかJSPをよぶかの選択をしたかったのですが
この文章からはこれで十分なきがするんですが・・・
RequestDispatcher rDispatcher = null;
if(true){//条件分岐
rDispatcher = request.getRequestDispatcher("/sample_JSP.jsp");
rDispatcher.forward(request,response);
}else{
rDispatcher = request.getRequestDispatcher("/next.html");
rDispatcher.forward(request,response);
}
//上の式で駄目だったらelseの中に
response.sendRedirect("/next.html")
(2)のやり方は、kanayuさんのやり方と一緒だと思うので、
気にしないで下さい。
この回答への補足
kuro_73さん、何度もすみません。
できました。
そうですよねー。
JSP読んでるんだから、そこでIF使って
条件分岐して、HTMLにも
移動できますよね。。
FIRST.htmlのボタンクリックでSample.jsp
の画面にいき、Aボタンクリックで
条件判断してるんですけど、
FIRST.html
に戻った場合、もう一度ボタンクリックすると
ページがありません、って
なっちゃうんですよねー。。
Servletでなんかしてるんですかねえ。。。
ちょっとデバッグしてみます。
ありがとうございました!!!
ほんとうに昨日から何度もすみません。
助かりっぱなしです。
ページが表示されないのは、
HTMLの<FORM ACTION ="Servlet/Sample.Smp_Sevlet"
METHOD = "POST">
としていて、"Servlet/Sample.Smp_Sevlet"のところを
"Sample.Smp_Sevlet"とすると直りました。
有り難うございました。
本当に勉強不足を痛感します。
kuro_73さんはどのようにServlet + JSP + Bean
を勉強されたんでしょうか。
その辺も今度、お伺いしたいです。
本当に有り難うございました。
大変感謝しております。
No.4
- 回答日時:
>それは、ServlvetのdoPostメソッドで最後にJSPを呼び出す処理
>があるからです。そのへんの処理を作りたいのですが。。。
>Servletで次のHTMLに移動することはできますか?
やりたいことが大分分かってきました。
二回目の返答を見る前に書いてしまったので、ちょっと的外れなことを書いてしまいました。すみません。
Servletで、別のHTMLを表示するのは可能ですよ。
場合わけの部分はお任せするとして、
JSPをコールするやり方は、お使いのサーブレットによって異なると思いますが、
一般的な方法を二つ提案するとすると
(1)response.sendRedirect("/html/next.html");
ちなみにsendRedirectはサーブレットに対してもJSPに対しても可能です。
(2)RequestDispatcher dispatch = this.getServletContext().getNamedDispatcher("フォワードする先のサーブレット");
if (dispatch == null)throw new ServletException("サーブレット[" + forwardServlet + "]が定義されていません");
dispatch.forward(request.getRequest(), response);
こんなんでいかがでしょうか。
この回答への補足
kuro_73さん、回答有り難うございます。
>Servletで、別のHTMLを表示するのは可能ですよ。
>場合わけの部分はお任せするとして、
>JSPをコールするやり方は、お使いの
>サーブレットによって異なると思いますが、
今、私がServletのdoPostメソッド内でやっている
処理は
(1)//Bean(wk_Bean)のインスタンス作成
wk = new wk_Bean();
(2)//各パラメータ値取得
kcd = request.getParameter("cd");
・
・
・
(こんな感じでそれぞれ取得)
(3)//wk_Bean処理実行する(DB接続等)
wk.Work(rValue,kcd,knm,btn,flg_fst);
(4)//BeanをJSPに渡すためにHttpServletRequestオブジェクトにセット
request.setAttribute("wk",wk) ;
(5)//ViewであるJSPを呼び出す
RequestDispatcher rDispatcher =
request.getRequestDispatcher("/sample_JSP.jsp");
rDispatcher.forward(request,response);
こんな感じなんですが。。。
私の理解としては、(5)でJSPを呼びだしてるので
この部分で他のHTMLを呼べないかなと思ったのです。
うーん。Beanがテキスト入力の有無を判断した後、
このServletでHTMLかJSPをよぶか
の選択をしたかったのですが、kuro_73さんの書かれた
(2)RequestDispatcher dispatch = this.getServletContext().getNamedDispatcher("フォワードする先のサーブレット");
if (dispatch == null)throw new ServletException("サーブレット[" + forwardServlet + "]が定義されていません");
dispatch.forward(request.getRequest(), response);
というプログラムの意味がよく理解できてないのですが
これは、。。。フォワードするServletだけを
書いておいたらいいのですか?
よろしくお願いします。
No.3
- 回答日時:
きっと、<INPUT TYPE="text">の中身は表示の時にビーンから与えるんですね?
それで、<INPUT TYPE="text">の中身があってボタンを押すと、ビーンの中身をクリアして、もう一度同じページを表示する。
<INPUT TYPE="text">の中身が空でボタンを押すと次のページにいける。
もしこれが正しいとすれば、注意するべきは、
「同じJSPを表示」するときにサーブレットを介するのか、JSPに直接アクセスするのかということ。
Servletを介するのであれば、Servletの中でBeanの中身をクリアすればいいんですが、直接JSPの場合は、JSPの中で、Beanの中身をクリアしなければなりません。
JSPは、自分がはじめて呼ばれたのか、二回目に呼ばれたのかを判断するプログラムが必要となります。
やりたいことは、こんな感じでできると思います。
ただし、今手元にJavaScriptのリファレンスがないので、
if(txt.trim()=='')
この部分はあやしいです。
trim()もあるかどうかわからないし、== ではなく、equalsかも・・
<form name=a>
<input type="hidden" name="beanClear">
<input type="text" name="txt1">
<input type="button" onClick="check()">
</form>
<SCRIPT LANGUAGE="javascript">
<!--
function check(){
var txt = document.a.txt1.value;
//FORM a の txt1の値がブランクならば次のHTMLへ
if(txt.trim()==''){
document.a.action = "/html/next.html";
}else{
// trueならば受け取ったJSPかServleでBeanの中身をクリアする
document.a.beanClear.value= "true";
document.a.action = "/html/this.jsp";
}
document.a.submit();
}
-->
</SCRIPT>
この回答への補足
>きっと、<INPUT TYPE="text">の中身は表示の時に
>ビーンから与えるんですね?
はい。そうなんです。
<INPUT TYPE = "text" NAME = "cd" size = "15" MAXLENGTH=2
value= "<jsp:getProperty name="wk" property="cd_text" />">
こんな感じです。
>それで、<INPUT TYPE="text">の中身があってボタンを押すと、
>ビーンの中身をクリアして、もう一度同じページを表示する。
><INPUT TYPE="text">の中身が空でボタンを押すと次のページにいける。
そうなんです。説明が足りなくてすみませんでした。
そういうことが言いたかったんです。質問が伝わりませんよね。
ほんと、すみません。
>注意するべきは、「同じJSPを表示」するときにサーブレットを介するのか、
>JSPに直接アクセスするのかということ。
>Servletを介するのであれば、Servletの中でBeanの中身をクリアすればいいんですが、
>直接JSPの場合は、JSPの中で、Beanの中身をクリアしなければなりません。
>JSPは、自分がはじめて呼ばれたのか、二回目に呼ばれたのかを判断するプログラムが
>必要となります。
えーと。。
私がやってたのは、JSPでボタンを以下のように作ります。
<INPUT TYPE = "submit" NAME="RTN" VALUE ="RTN">
そして、ServletがBeanのインスタンスを作成し、
Beanの中でテキストの入力有無を判断し、テキスト入力合った場合
同じJSPを表示しますのでSetメソッドを使って
テキストをクリアし、セットします。
これは実行されるのですが、
テキスト入力がなかった場合は次のページに移動したいのに
その動作ができません。
それは、ServlvetのdoPostメソッドで最後にJSPを呼び出す処理
があるからです。そのへんの処理を作りたいのですが。。。
Servletで次のHTMLに移動することはできますか?
それとも、kuro_73さんが書かれたような
スクリプトじゃないと難しいのでしょうか。。?
No.2
- 回答日時:
>画面には、テキストとボタンが配置してます。
>Aボタンクリックで、テキストに何にも
>値が入ってない場合は別のHTMLに移動し、
>何か値が入っている場合は テキストをクリアする処理をしたいのですが
>上記のように、JSPで判断させようとしています。
テキストというのは、<INPUT>タグのテキストのことでしょうか?
だとすると、JSPの使用方法の認識に誤りがあります。
JSPは表示する前にコンパイルしてHTML形式に吐き出すものなので、
表示されてしまったものの現在の状態を認識したり、
変更することはできません。
テキストという意味が、wkビーンのrtn_tmpというプロパティの値の意味であるならば、
まず wk.getRtn_tmp()==1 を wk.getRtn_tmp().equals("1")
に変更する必要があります。
お書きになられてたソースでは、
wk.getRtn_tmp()==1 ならば、form.htmlに
wk.getRtn_tmp()!=1 ならば、/servlet/jyohoya.kanri_Srvサーブレットに
移動するようになっています。
移動した先が真っ白なのは、
・Servletにしか移動していない&&サーブレットにエラーがある
(エラーというよりも、動作しているものの、正しいパラメーターを受け取っていないため、誤動作していて、PrintWriterをフラッシュしていない状態)
・<INPUT>を含む<FORM>のアクション先に移動している
のどちらかだと思います。
前の方もかかれていましたが、
やりたい事が、はっきり見えません。もう少し詳しい情報をお願いします。
この回答への補足
kuro_73さん、引き続き、有り難うございます。
>テキストというのは、<INPUT>タグのテキストのことでしょうか?
>だとすると、JSPの使用方法の認識に誤りがあります。
>JSPは表示する前にコンパイルしてHTML形式に吐き出すものなので、
>表示されてしまったものの現在の状態を認識したり、
>変更することはできません。
そうです。
流れとしては。。。
入力画面(JSPで書いている)にINPUTタグのテキストと、ボタンがあって、
(1)もし、テキストになにかを入力した状態で
ボタンを押すと同じJSPの画面を表示させるんですが、そのときは
テキストはクリアして出したいのです。
(2)もし、テキストになにも入力されていない状態で
ボタンを押したらHTMLの画面(入力画面と別の画面)に移動
させたいのです。
こんな感じで、伝わりますでしょうか。。。
>お書きになられてたソースでは、
>wk.getRtn_tmp()==1 ならば、form.htmlに
>wk.getRtn_tmp()!=1 ならば、/servlet/jyohoya.kanri_Srvサーブレットに
>移動するようになっています。
そうですね。。なんか認識不足、使用方法を間違ってる気がします。
よく分からなくなってきましたが、やりたいことを
端的に言うと、一つのボタンに、Resetの処理と移動の処理
の二つの機能を持たせたいってことだったのですが。。。
単純にボタンを二つわけたらいい、といえばいいのですが、、、
よろしくお願いします。
<説明、質問の補足>です。
ボタンクリックで、ブラウザからServletに
リクエストが送信されます。そして、
ServletからBeanのインスタンス作成で
Beanで処理をさせ、その後、Servletが
JSPを呼び出す・・・・という
一連の流れがありますよね。
で、ボタンクリック後、テキストに入力があったか
どうかを判断するのはBeanで処理するとして、
ServletがJSPをよぶか、HTMLを呼ぶか判断
するようにしたらいいのでしょうか??
No.1
- 回答日時:
> JSPのIF文で判断させようと思ったんですが・・・
「思ったんですが」どうなったんでしょうね。期待通りにならないのは
わかるんですが、JSP のエラーが出るんでしょうか、それとも、テキストに
値が入っているかどうかに関わらず、if のどちらかしか通らないとか。
もし、JSP のエラーが出てるんなら、%>> を %> > (間にスペースをひとつ)とか。
wk は、session に保持しているんですよね。値を突っ込んでいるつもりで、
突っ込まれていない、とか。
<%= wk.getRtn_tmp() %> とやって、値を確かめてみるとか。
# 試してないので、全くのあてずっぽうです
ちなみに、期待している動作は JavaScript だけでも実現できますが、
そういう選択肢は駄目ですか?
この回答への補足
回答ありがとうございます。
>> JSPのIF文で判断させようと思ったんですが・・・
>「思ったんですが」どうなったんでしょうね。
>期待通りにならないのは わかるんですが、
>JSP のエラーが出るんでしょうか、それとも、
>テキストに 値が入っているかどうかに関わらず、
>if のどちらかしか通らないとか。
すみません。投げかけておいて、中途半端ですよね。
申し訳ないです。
JSPのIF文で判断させると、エラーにはならずに
実行はするんですが、
IFでもELSEでも、どちらも
白いページに移動するだけです。
>ちなみに、期待している動作は JavaScript だけでも実
>現できますが、
>そういう選択肢は駄目ですか?
私はスクリプトについて全く知らないのですが、
この動作は実現できるのですか?
だとしたらどのようにすればできるのか
ご教授願いたいのですが。。。。
よろしくお願いします。
私のほうも、もう少し調べてみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- JavaScript jsで質問です。 ボタンが二つ存在し、両方のボタンがクリックされたことをチェックしたいのですが、どの 4 2022/11/22 10:30
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript HTMLでJavaScriptを使ってパスワードの強化判定のプログラムを作成しています。 一通り作っ 2 2022/10/19 01:41
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォームで同じ複数のnameで違...
-
Servletへフォームから配列を送...
-
フォーム上で押されたボタンに...
-
リクエストに応じたselectedの...
-
「<c:forEach タグが終了し...
-
int型の内容をbyteの配列にコピー
-
javaでDBから取得したデータのJ...
-
テキストボックスで入力したデ...
-
Struts、Iterateタグの使い方
-
ラジオボタンの選択肢をサーブ...
-
formでテキストとファイルタイ...
-
struts iterateタグ内のデータ...
-
strutsを使用したjspでjavascri...
-
Strutsでの入力データチェック...
-
Java struts プルダウン
-
checkboxのvalue値を動的にしたい
-
Struts2のifタグについて
-
Strutsで、どのRadioボタンが選...
-
三菱GOTの画面切り替えについて
-
ActiveWorkbook.Pathの一つ下の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォーム上で押されたボタンに...
-
リクエストに応じたselectedの...
-
フォームで同じ複数のnameで違...
-
int型の内容をbyteの配列にコピー
-
javaでDBから取得したデータのJ...
-
「<c:forEach タグが終了し...
-
strutsを使用したjspでjavascri...
-
EL式 true falseを表示
-
JSPでのリストボックス表示
-
StrutsでPOSTのデータ(リクエ...
-
formでテキストとファイルタイ...
-
jspファイルで注文フォームの合...
-
jspでjavascript関数へ引数を渡...
-
ラジオボタンの選択肢をサーブ...
-
struts-config.xmlの設定
-
動的に作成したラジオボタンの...
-
JSP+Servletで終了ボタン
-
Servletへフォームから配列を送...
-
Strutsでの入力データチェック...
-
JSPとサーブレット間での画面遷...
おすすめ情報