- - PR -
Actionの結果、別プロジェクトに遷移したい
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-05-26 11:44
Strutsをベースとしたプロジェクトを構築しているのですが、
一つのActionを実行した結果、別のプロジェクト(webサーバは同じ) に遷移したいと思っているのですが、どうすれば実現できるか困っております。 どうか知恵をお貸しください。 【要件】 ・ユーザ区分ごとに、スキーマを分ける。 (DBスキーマだけでなく、webプロジェクトごと分割する(サーバは同一でwebappsのみ別)。) 【構想】 ・まず、共通のプロジェクトにてログイン処理を行い、 その際に、ユーザマスタから取得した区分によって、遷移するpathを指定し、 それぞれのプロジェクトのログイン後の画面を表示したい。 【問題】 ・共通のログインAcitonの中で、ユーザマスタをselectして、ユーザ区分は取得できるのですが、 その後に遷移先の指定ができない。 ・struts-config.xmlの<forward name="success" path="/pages/UserList.vm" /> のPathをActionの中で動的に宣言することはできそうだが、pathには"/"から始まるパスしか 許可していないっぽい。 →ためしに<forward name="success" path="http://www.yahoo.co.jp" /> とするとExceptionが発生。 (java.lang.IllegalArgumentException: パス http://www.yahoo.co.jp が"/"文字で始まりません) どうにか別webapps遷移先に指定を行うことはできないでしょうか? | ||||||||
|
投稿日時: 2008-05-26 11:59
ブラウザ上から単純に外のWebアプリケーションのURLへリンクしたaタグをクリックすると遷移できますよね。
考え方はそれと同じで、Strutsの範囲内で遷移させようとせず、HTMLおよびHTTP的に遷移させればよいのです。 処理を行った後で遷移したいのであれば、HTTPのレスポンスコードを302 Moved Temporarilyとしてブラウザ側からリダイレクトさせるのが簡単です。 この際問題となるのは、ログインなどの認証関係でしょうか。サーバ間で通信させるとか、工夫が必要になることが多いですね。 | ||||||||
|
投稿日時: 2008-05-26 13:21
フォワードは同じアプリケーションに処理を委譲するためのものですので、
nagiseさんのおっしゃるとおり、リダイレクトさせるのが筋です。 アプリケーションサーバ固有でシングルサインオンとか、 クロスコンテキストによる情報の共有とかも可能です。 ちなみに、
ではなく、
ではどうですか? | ||||||||
|
投稿日時: 2008-05-26 19:14
>かつのり様
struts-config.xmlの記述をご指摘のように変更したら無事yahooが表示されました! こんな記述ができること、初めて知りました。 >nagise様 ありがとうございます。とりあえずリダイレクトで、別プロジェクトの画面を表示することができました。 認証等、まだ問題はありますが、前に進めそうです。 お二人ともありがとうございました。 |
1