Strutsでは、1.1よりモジュールという機能が追加されました。これは、Struts構成ファイル(struts-config.xml)の肥大化を防いだり、Webアプリケーションを機能ごとに分割して開発したりするための方法を提供するものです。
モジュールは本来アプリケーションを機能ごとに分割するためのものです。そのため、あるモジュールから別のモジュールへアクセスすることは、モジュール間の依存性を強めるので好ましくありません。しかし、場合によってはどうしても必要となることもあるでしょう。
このような場合は、以下の3種類の方法で別モジュールのアクションにアクセスできます。
- StrutsのHTMLタグライブラリ(struts-html.tld)を使い、ハイパーリンク用のタグでmodule属性を指定する(Struts1.2以降)
- Struts構成ファイル中の<forward>タグで、コンテキストからの相対パスを指定する
- Struts組み込みのアクションSwitchActionを使う
Struts1.2以降であれば、最も簡単のはHTMLタグライブラリによる方法でしょう。しかし本TIPSでは、Struts1.1でも使うことのできる、SwitchActionによる方法について説明します。
注:Strutsのモジュール機能の使い方については、「Strutsでコンフィグレーションファイルを分割する」を参照してください。
使い方
まず、Struts構成ファイルのアクションマッピングにSwitchActionを登録します。アクションへのパスはどこへ設定しても構いませんが、ここでは「/switch」としています。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
SwitchActionクラスへアクセスするには、以下の2つのリクエスト・パラメータが必要になります。
パラメータ | 説明 | |
---|---|---|
prefix | アクセスしたいモジュールを指定するための接頭辞。「mod」モジュールへアクセスするならば、「/mod」とする。デフォルト・モジュールの場合は、「/」とはせず空の文字列を渡す | |
page | 切り替え先となるモジュール内のページ。モジュールのStruts構成ファイルにおいて、パス「/dir/page」にマッピングされているアクションへアクセスするには、「/dir/page.do」を渡す |
モジュール「mod1」から、モジュール「mod2」の「/myPage」アクションにアクセスするには、以下のようにします。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
また、デフォルト・モジュールの「/myPage」アクションへアクセスする場合は、
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
となります。
ここではGETメソッドを用いましたが、POSTメソッドを使い、フォームから上記のリクエスト・パラメータを送信しても問題ありません。なお、当然ですが、
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
などとすると、循環参照が起こってエラーとなるので注意が必要です。
Copyright © ITmedia, Inc. All Rights Reserved.