2009-03-09 13 views
2

私はJavascriptツリーコントロールを持つJSPを持っています。ボタンを押すだけでこのツリーを非表示にすることができます。つまり、ページAの場合はユーザーがツリーを非表示にし、ページBの場合は、ユーザーがツリーを表示することを決定するまでツリーを非表示のままにしておく必要があります。JSPサーブレットとAjaxの問題

これを行うには、AJAXを使用して、ページがロードされたときにチェックされるサーバー上のセッション変数を設定しています。問題のページにURLにクエリ文字列がない場合、これはうまく動作します。

しかし、のようなURLのページで:

http://localhost:8084/myApp/myAppPage?myAppParam=0

私は表示/非表示ボタンを起動する場合、クエリ文字列が失われているので、私はJavaのNumberFormatExceptionがエラーを取得します。しかし、この後に手動でページをリロードすると、ツリーが更新されたページが表示されます。

ツリーのHTMLはサーバー上に構築され、各ページのHTML divに表示されます。

私の理解では、AJAXはページの一部のみを更新することを意図しており、この方法でページを書き込んでdivの内容を更新できるようにしています。しかし、私はなぜクエリ文字列が失われているのか分からない。

AJAXがフルページのリロードを強制しようとしているのだろうか?

AJAX呼び出しがサーブレットに正しく到達していることがわかります。しかし、サーブレットは別のページを呼び出すように設定されていません。

誰もこれまでに見たことがありますか?あなたは回避策を知っていますか?

答えて

0

コードが関与することなく、推測するのは難しいです。考慮すべき事項:

  • どのようにAJAXリクエストを作成していますか?つまり、jQueryやPrototypeなどの確立されたフレームワークを使用していますか?
  • 表示/非表示ボタンの裏にはどのようなコードがありますか?
  • サーブレットはどのようにリクエストに応答しますか?

あなたのAJAX要求が起こっているのか見て(またはコースのデバッガを使用)し、サーブレットの中に正しいと伐採されていることを確認するためにFirebugを使用することができます。

0

ジョン

ご返信ありがとうございます。

私は今、部分的に修正されており、フォームボタンからAjaxをトリガーして暗黙のページリフレッシュを行っていなければなりません。

Martin O'Shea

2

最初のリクエストの応答でアージラクティブなリクエストを発生させると、最初のリクエストURLのクエリ文字列は自動的に渡されません。それをあなた自身のajaxicalリクエストのURLに追加する必要があります。最初の要求のクエリ文字列は、window.location.searchで利用できます。

var ajaxurl = '/someservlet' + window.location.search;