2011-12-21 9 views
2

私はJava Web Appを持っています。ページの1つに3つのチェックボックスとテーブルがあるフォームが含まれています。 チェックボックスをオンにすると、テーブルに異なる情報が入力されます。 送信ボタンはありません。ユーザーがボックスの1つをチェックするか、チェックを外すときはいつでもフォームが送信されます。同じページのページと別のページのどちらに到着したかを確認する方法

理論的には、ユーザーがすべてのボックスをオフにして、テーブルが空になるようにしたいとします。しかし、ユーザーが別のページからページに到着した場合、または最初にアプリケーションにアクセスしたときに、デフォルトでチェックボックスの1つと、それぞれのデータがテーブルに表示されるようにします。

+1

チェックボックスのいずれかをチェックするだけでは設定できませんか? –

+0

私は可能ですが、その問題は、ユーザーがデフォルトでチェックするように設定したチェックボックスをオフにし、他の2つをチェックするとどうなりますか?予想される動作は、フォームの送信、ページの再読み込み、およびチェックされた新しいボタンのチェックを継続することです。しかし、私がデフォルトでチェックするように設定しているので、ビューが返されたときにフォームによって行われた変更は保持されません。 –

答えて

2

他のページからのリクエスト(または直接URLアクセス)からのリクエストと同じページ(送信)をHTTPメソッドで区別することができます。

フォームにPOSTメソッドを使用し、リクエストメソッドがGET(直接アクセスまたは別のページからのリンク)かPOST(フォーム提出)かどうかを確認します。

+0

これは、ユーザーがあなたのページにアクセスしてからリロードする場合も正しく処理されますが、現在与えられているその他の答えはそうではありません。 – BRFennPocock

+0

しかし、その区別は防弾ではありません。誰でもあなたのページへのPOST要求を行うことができます(自分のページだけでなく)。しかし、この場合は、フォーム提出として扱い(うまくいけば、要求を承認し、検証する)、うまくいくはずです。 –

-1

セッションを使用すると、ユーザーの所在を特定するのに役立ちます。ページが別のページにリダイレクトされる前に、オリジナルページにセッション属性が設定されています。どこかのページの上部に、あなたは彼らが

すなわち

ページ1

session.putValue("referringPage", "Page1");

2ページ

if (session.getValue("referringPage") != "Page2") { 
     //do something 
} 

から来ている場所を確認するために、ユーザーのセッション属性を確認することができます編集:

ちょうどあなたのJSP /サーブレットへのあなたの3つのチェックボックスに基づいて3種類のリクエストパラメータより良いパス

0

request.getHeader("Referer"));

のようなものを使用し、それに応じてテーブルを変更するパラメータに応じヘッダをチェックすることで、HT。

ユーザーが別のページから来ている場合は、doGetまたはdoPostの開始時にリクエストパラメータをデフォルト値に設定します。

+0

これは、私が従ったスキームはかなり変わっていますが、小さなバリエーションでは、チェックボックスは実際にはすべて処理の便宜のために同じ名前になっています...しかし、私の本当の疑問は_howが別のページか結局のところ、ビューが表示される前に両方の型が同じサーブレットを経由するためです。 –

関連する問題