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