| Apache/Jakarta編 |
|
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」としています。
| struts-config.xml(抜粋) |
<?xml version="1.0" encoding="UTF-8" ?> |
SwitchActionクラスへアクセスするには、以下の2つのリクエスト・パラメータが必要になります。
| SwitchActionで指定すべきリクエスト・パラメータ | |
| パラメータ | 説明 |
| 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= |
などとすると、循環参照が起こってエラーとなるので注意が必要です。
| 「Java TIPS」 |
TechTargetジャパン
- Scalaのパッケージ、アクセス修飾子、オブジェクト継承 (2012/5/22)
インポート、パッケージオブジェクト、抽象クラス/抽象メソッド、オーバーライド、final、シールドクラスなども - 基幹系システムでCloud SQLは使えるか試してみた (2012/5/17)
サンプルとしてMRPシステムを作成して動かし、「再帰呼び出し」などのパフォーマンスを測定して検証してみます - アジャイル管理ツール9選+Pivotal Tracker入門 (2012/5/14)
群雄割拠のアジャイルプロジェクト管理ツールを9つ紹介し、特に注目を集めているPivotal Trackerの基本的な使い方を解説します - サーバサイドJSやJavaでWebアプリが作れるXPages (2012/5/11)
Notes/Dominoの資産をサーバサイドJavaScriptやJavaで操作し、HTMLやJavaScript、CSSをUIにできる技術を紹介
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -
