0

Struts2アクションからStruts2ではないレガシーアクションクラスにリクエストを転送する必要があるシナリオがあります。これが私のフローです。

JSP(serverd from struts 2 action under customer namespace)--->Action1(Struts 2 action under customer namespace)--->Action2(Non Struts 2 Action)--->ResultJSP.

これが私の結果アノテーションで、実際にリクエストをレガシーアクションに転送します

@Result(name = "displayCustomer",location = "legacyAction.do", type = "dispatcher")

ResultJSPが正しく表示されます。ただし、問題は、ブラウザがそのjspに含まれるすべてのリソース(画像、javascriptファイルなどの名前空間、つまりcustomer(最初のアクションの名前空間であり、リクエストがトリガーされたJSPページの名前空間でもある)を探していることです。リクエストがトリガーされたパスの下でページリソースを検索する(そしてフォームを送信する)のはブラウザのデフォルトの動作ですか(パスが相対的である場合)?

元のリクエストパスではなく、実際に提供されたページのパスに関連するリソースを検索するようにブラウザを作成する方法はありますか?

質問は明確ではないかもしれませんが、私はそれを言葉で表現するために最善を尽くしました

4

1 に答える 1

0

コメントで話し合ったことを要約しようと思います。まず、サーバー側でクライアントで何が行われているのかを必ず理解してください。ドキュメント相対リンクの場合、ブラウザはアドレスバーに表示される内容に基づいて検索します。これは、jspでリンクを作成するさまざまな方法を説明する長い答えです。次に、リダイレクトを送信するなど、場所を変更するようにブラウザに指示する方法があります。ただし、redirect(302httpステータスコード)の場合、ブラウザはGETリクエストを行います。POSTを実行していて、パラメータもリダイレクトする必要があるため、これは適切ではありません。ただし、ステータスコードの代わりに、302ステータスコード307を使用できます。これはトリッキーで、以前に投稿したリンク。基本的に、2番目のアクションに転送する代わりに、フォームとjavascriptを含むダミーのjspを返します。これにより、ページが読み込まれるとすぐにこのフォームが2番目のアクションに送信されます。

これをすべて言っても、js/imageファイルがサーブレットパスに関連するリンクを使用しているのは私にはかなり奇妙に思えます。私はあなたのサイトのルートに関連するものを作ります。そして、あなたはそれらをそこに置くことができます。また、変更できないレガシーアクションが他の場所を使用している場合は、次のようなものを使用できます。UrlRewriteFilter

于 2013-03-04T18:00:06.380 に答える