準・究極の選択

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項目をサーバに送ることが不可能ということもわかりました。


以上の件で何か解決策がわかるかたはいらっしゃいますでしょうか?
よろしくお願いいたします。

A 回答 (3件)

>まずはhidden項目にパラメータをセットし、


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

アクションサーブレットでgetParameterした後、sessionにセットしてはどうでしょうか?
    • good
    • 0

>ただ要件として、クライアントではチェックを行わず、


>チェックはサーバ側で行うという条件があります。



>その中で、クライアントでしか取得できないjavascriptの有効/無効を
>どのようにサーバ側でチェックするのかというのが質問内容です。

というのはそもそも矛盾した要件ではないですか?
<NO SCRIPT>タグでjavascriptの有効無効をチェックする事は
hiddenでサーバーに渡すにせよ結局はクライアントのチェックということになると思いますが・・・
きっと制御を行うのがサーバー側でなければならないという要件になるんですよね?

filterクラスを作成してfilterの段階で処理を入れてみてはどうでしょうか?
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/12/12 12:32

要件定義がまだはっきりとしないのどうアドバイスをすればよいのかわかりませんが・・・


javascript有効が前提だとして最終的には処理を拒否するのであれば、一番最初の入力フォーム?を表示したタイミングで
javascriptがOFFであればエラー画面へリダイレクトするというのはどうですかね?

この回答への補足

要件がわかりづらくて申し訳ありません。
簡単に言うと
通常であれば、<NOSCRIPT>内にエラーページへ遷移するなどクライアント側で制御すればエラーページへ遷移すると思います。
ただ要件として、クライアントではチェックを行わず、
チェックはサーバ側で行うという条件があります。

その中で、クライアントでしか取得できないjavascriptの有効/無効を
どのようにサーバ側でチェックするのかというのが質問内容です。
ただし条件として、確実にjavascriptが無効の場合にしか
エラーページに遷移させないというのがあります。

同じようなことでcookieの有効無効チェックなどもあるかと思いますが、
こちらはsessionクラスのisRequestedSessionIdFromCookie()メソッドを
利用して対応できました。

補足日時:2008/12/12 11:56
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!