- - PR -
LookupDispatchActionを使用してのキャンセルボタンの動き
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-02-14 19:21
なれないjsp、strutsを使用して某アプリケーションを作成しております。 現在 ActionクラスをLookupDispatchActionを継承して、 formクラスをValidatorFormを継承して作っております。 このActionクラスには登録、更新、戻る(前画面に遷移)の処理がありまして、 登録、更新時にはValidateが走り、戻るのときは走らせないようにしています。 (ActionForward cancelled()でjspに作った「戻る」ボタン(<html:cancel>タグを使用)のアクションをつかんでいます) 上記の動きはできているのですが、やっかいなのが 「戻る」ボタンが押されたら「前の画面にもどりますがいいですか?」という、 ポップアップを出さなければいけない・・という仕様なのです。 これを出すようにonclickにjavascriptでconfirmを記入しているんですが このポップアップを抜けるとValidateが走ってしまうのです。 これを走らせないようにすることは可能なのでしょうか? ソース的には <html:cancel onclick="return back();" >戻る</html:cancel> <script type="text/javascript" language="JavaScript1.1"> <!-- // ポップアップ function back() { if (confirm("前画面に戻ります。よろしいですか?")) { // ここにキャンセル処理を直接呼び出せる処理? } return false; } --> </script> こんな感じです。 質問が初心者じみていて申し訳ないのですが どなたか解決方法をご存知の方がいらっしゃいましたら ご教授よろしくお願いします。 | ||||||||
|
投稿日時: 2006-02-15 03:55
inaです。
LookupDispatchAction を使ったは無いのですが、多分こんな感じで出来ると思います。 (「キャンセルボタンの時だけチェックしない」ではなく、「チェックが必要な時だけチェックする」になりますが...) 1) form の onsubmitイベント等に validate用 の関数を指定しない 2) 呼び出したいボタンのonClickイベント用にそれぞれ用の関数を記述し、その中で ・(必要があれば) validate用 の関数を実行 (ダメならfalseでリターン) ・<html:rewrite>を使って、適切な遷移先(やパラメータ)を設定して、該当フォームをサブミット [ メッセージ編集済み 編集者: ina 編集日時 2006-02-15 03:57 ] | ||||||||
|
投稿日時: 2006-02-15 10:36
inaさん、返答ありがとうございます。
inaさんのやり方でほぼ実現できました。 ・・・ですが、すごい微妙なことなんですが・・ この修正方法を実現するとたしかにvalidateは制御できるのですが こんどはvalidatorが機能しなくなってしまいます・・。 「Strutsのvalidator機能を使用すれば、クライアント(Webブラウザ)のサイドでフォームへの入力値をJavascriptを用いてチェックする事ができます。」 ↑これも実現させたいのですが、これをするためには <html:form>のonsubmit属性に return validateXXXXForm(this) と、設定をしなければいけないようなのです。 ただ・・自分でスクリプトチェックを書けばできるとは思うので 最悪そうしようかなあと思ってはいるんですが・・ できることなら既存?の処理を使用して作りたいのです。 もしご存知でしたらご教授よろしくお願いいたします。 | ||||||||
|
投稿日時: 2006-02-15 16:31
inaです。言葉足らずだった様ですね。ごめんなさい。 前回の私の回答ですが、まさに「Strutsのvalidator機能を使う」という想定でした。 ですので、 <html:form>のonsubmit属性に「return validateXXXXForm(this)」は書かないで、 自作チェック関数の中から「validateXXXXForm(this※)」を呼ぶ ※引数のthisはチェック対象のフォームです。 としてあげれば良いです。 例)
[ メッセージ編集済み 編集者: ina 編集日時 2006-02-15 16:48 ] | ||||||||
|
投稿日時: 2006-02-15 17:26
ありがとうございました。
上記の方法で実現できました。 またなにかありましたら よろしくお願いいたします。 |
1