• 締切済み

javascript無効時にサーバでエラー処理をしたい

JavaのStrutsで構築をしているWebアプリケーションです。 ●やりたいこと 確実にjavascriptが無効であるブラウザの場合に、 サーバ側(共通Action)でエラー処理を行いたいです。 ●環境 apache, tomcat, struts, jdk5 ●条件 (1)クライアント側での制御は不可(<NO SCRIPT>タグなど) (2)JSPからActionへはjavascriptが無効という情報を送る必要がある。 (3)JSPからの遷移時にsubmitボタンがない事が多い。 (4)共通Actionでは他チェックも入っているため、  基本エラーページで有効の場合は正しいページということができない。 以上のことから、まずはhidden項目にパラメータをセットし、 javascriptが有効の場合には有効という情報をサーバ側に送信し、 サーバ側ではgetParameterで(!null&!有効)という制御で エラーページに遷移するプログラミングを組んだのですが、 一回の呼び出しで共通Actionが複数回呼ばれることがあり、 二回目以降はパラメータがnullとなってしまいましたので こちらの手段では難しいことがわかりました。 上記のことより、offという情報を条件の(2)が必要と判断したのですが、 条件(3)により、javascript無効時にはsubmitさせられないので hidden項目をサーバに送ることが不可能ということもわかりました。 以上の件で何か解決策がわかるかたはいらっしゃいますでしょうか? よろしくお願いいたします。

みんなの回答

  • kozikoji
  • ベストアンサー率29% (5/17)
回答No.3

>まずはhidden項目にパラメータをセットし、 >javascriptが有効の場合には有効という情報をサーバ側に送信し、 >サーバ側ではgetParameterで(!null&!有効)という制御で >エラーページに遷移するプログラミングを組んだのですが、 >一回の呼び出しで共通Actionが複数回呼ばれることがあり、 >二回目以降はパラメータがnullとなってしまいましたので >こちらの手段では難しいことがわかりました。 アクションサーブレットでgetParameterした後、sessionにセットしてはどうでしょうか?

  • covachan
  • ベストアンサー率38% (46/120)
回答No.2

>ただ要件として、クライアントではチェックを行わず、 >チェックはサーバ側で行うという条件があります。 と >その中で、クライアントでしか取得できないjavascriptの有効/無効を >どのようにサーバ側でチェックするのかというのが質問内容です。 というのはそもそも矛盾した要件ではないですか? <NO SCRIPT>タグでjavascriptの有効無効をチェックする事は hiddenでサーバーに渡すにせよ結局はクライアントのチェックということになると思いますが・・・ きっと制御を行うのがサーバー側でなければならないという要件になるんですよね? filterクラスを作成してfilterの段階で処理を入れてみてはどうでしょうか?

littlesurfer
質問者

お礼

ありがとうございます。 ご指摘どおり、有効/無効はクライアント側で、 エラー処理はサーバ側です。 Filterの情報ありがとうございます。

  • covachan
  • ベストアンサー率38% (46/120)
回答No.1

要件定義がまだはっきりとしないのどうアドバイスをすればよいのかわかりませんが・・・ javascript有効が前提だとして最終的には処理を拒否するのであれば、一番最初の入力フォーム?を表示したタイミングで javascriptがOFFであればエラー画面へリダイレクトするというのはどうですかね?

littlesurfer
質問者

補足

要件がわかりづらくて申し訳ありません。 簡単に言うと 通常であれば、<NOSCRIPT>内にエラーページへ遷移するなどクライアント側で制御すればエラーページへ遷移すると思います。 ただ要件として、クライアントではチェックを行わず、 チェックはサーバ側で行うという条件があります。 その中で、クライアントでしか取得できないjavascriptの有効/無効を どのようにサーバ側でチェックするのかというのが質問内容です。 ただし条件として、確実にjavascriptが無効の場合にしか エラーページに遷移させないというのがあります。 同じようなことでcookieの有効無効チェックなどもあるかと思いますが、 こちらはsessionクラスのisRequestedSessionIdFromCookie()メソッドを 利用して対応できました。

関連するQ&A