0

私はページを持っています-それをページXと呼びましょう-ここで、でajax構築されたテーブルにデータを入力する呼び出しを行いjqGridます。だからここで私はlocalhost:8080/servlet/ajax/Data.jsonこれを呼び出しますservlet。ここで、ページの有効期限が切れても、ユーザーが引き続きテーブルにアクセスしたい場合(たとえば、データの検索)、リクエストをページにリダイレクトしたいと思いLoginます。

このajax呼び出しは、私のページ(である)servletと同じではないData.jsonを呼び出すため、転送を使用できません(JBoss 4.2を使用しており、同じページでのみ転送できます)。servletcontextLoginlocalhost:8080/servlet/myappservletservletcontext

実際に実行されているが表示されていないページsendRedirectを呼び出すことができる、でリダイレクトしようとしました。Loginそして、これは私が迷子になった場所です。私のLoginページは実行されましたが、まだページXが表示されています。返されたHTML(Loginページから)をページXの応答に書き込もうとしました(私もに設定しContent-Typeましたtext/html)。HTMLは応答で返されますが、表示されません。

私は、要求されたときにページを取得するApache Turbine別の方法を使用しています。servletあなたはなにか考えはありますか?どうしたらいいのかわからない。

4

2 に答える 2

2

サーブレットservlet/ajax/Data.jsonがAJAXリクエストにログインページにリダイレクトするように指示しているようです。次に、ページはログインページを使用してjqGridテーブルをレンダリングしようとしますが、これはおそらく機能しません。

servlet/ajax/Data.jsonブラウザ自体をリダイレクトする必要があるかどうかを確認するために、AJAX呼び出しを行う場所にコードを追加する必要があります。サーブレットが応答として302リダイレクトを返す場合、またはサーブレットが単に「SESSION EXPIRED」であるエラーを返す場合、サーブレットへのAJAX呼び出しを行うブラウザ側のJavaScriptは、セッションが期限切れになったことを認識し、リダイレクトします。ブラウザからログインページに移動します。

于 2012-07-23T18:08:32.660 に答える
1

Ajax呼び出しは非同期呼び出しであり、ajax呼び出しに対するsendRedirect呼び出しは効果的ではありません(ajax応答は常に応答をイニシエーターに送信します)。

XMLHttpRequestステータスコードを使用してページの有効期限を確認してから、javaスクリプトwindow.locationを使用してブラウザのURLをログインURLにリセットする必要がある場合があります。

于 2012-07-23T18:08:46.843 に答える