Home of: [工房 "藤車"] > [SourceForge.net における PageMixer]

Struts 環境における利用

このチュートリアルに関して

このチュートリアルの目的は、 Struts との連携における PageMixer 既定義クラスの利用方法の習得です。

このチュートリアルではこれを、 Struts における JSP ファイルから、 PageMixer を用いた Servlet への移行事例を用いて説明します。

PageMixer をご存知無い方は、 "PageMixer の利用" を先にご覧下さい。

このチュートリアルのソースおよび設定ファイルは、 配布物における "src/demo/struts/src" および "src/demo/struts/war" 配下にあります。

注意: 本チュートリアルで示したクラス図およびサンプルソースは、 配布物との厳密な一致よりも、 説明の簡便さを優先しました。

チュートリアルでの記述と配布物の違いに、 混乱しないことを願います。

備考: 本チュートリアルは、 ページのコンパクトさよりも、 1ページでの情報一覧性を優先させるために、 大きな HTML ページから構成されています。

大きなページとそうでないページのどちらがお好きですか?

各節共通事項

本チュートリアルの各節において共通の事柄がいくつかあります。

HTML 内容の国際化(I18N)/地域化(L10N)

Struts と JSP の組み合わせにおけるメッセージの国際化(I18N) および地域化(L10N)には、 "bean:message" TagLib が利用されます。 一方で、 PageMixer フレームワークにおける I18N/L10N は、 メッセージ単位ではなくページ単位で行われます。

詳細は、 "locale に応じたページ描画" をご覧ください。

フィルタ生成のサンプルコード

利便性の点から、 本チュートリアルで説明されているフィルタのほぼ全てが、 3.1 版以降の PageMixer フレームワークによって "StdTailFilter" の一部として提供されていますので、 各節において例示しているようなコードは、 配布物中の "src/demo/struts/src" 配下には存在しません。

それに加えて、 StdTailFilter は PageMixer/Struts 連携のための *PageServlet 群によって自動的に利用されるため、 配備識別子(web.xml)において StdTailFilter 利用のために何かを記述する必要はありません。 詳細は StrutsFilterFactory を参照してください。

ローカル資源の位置

HTML ページで指定された資源の位置(location)は、 以下のように取り扱われます。

要求 URI 相対指定:

位置の冒頭にスラッシュ("/")が含まれない場合です。

このような記述をする場合、 要求された URI との相対性を実行前に決定できないため、 例えば、 404(Not Found) エラー用のテンプレート HTML にトップページへのリンクを含めることは出来ません。

base URI 相対指定:

位置の冒頭にスラッシュ("/")が含まれず、 且つ HTML ページが base タグを持つ場合です。

このケースでの問題は base が要求 URI と同じ値を持つ場合、 "要求 URI 相対" と同じであり、 大抵はそうであるように見受けられます。

この問題は、 base にコンテキストルートパスをはめ込むことで解決可能です。

Servlet コンテナにおける絶対指定:

位置の冒頭にスラッシュ("/")が含まる場合です。

このような記述をする場合、 配備の文脈に依存するようになるため、 ウェブアプリケーションは可搬性の無いものになります。

Struts 連携の際に PageMixer フレームワークは、 token 列中に現れる base HTML タグの href 属性に、 Servlet コンテキストのルート位置をはめ込みます。

これにより、 Struts Action のものを除いた、 アプリケーションのローカル資源の位置を、 要求 URI 相対ではなく Servlet コンテキストルート相対で指定することができます。 但し、Struts Action の位置は、 設定ファイル(群)において指定されたものと厳密に一致しなければなりません。

注意: PageMixer フレームワークは、 HTML ページへ自動的に base タグを埋め込むことはしませんので、 明示的に記述する必要があります。

備考

十分なドキュメント化がされていない事柄:

フォームにおける "cancel" ボタン

"ActionForm" に対応するフォームに "cancel" を置く場合、 正しい挙動を得るためには、 それ("input" タグ)の "name" 属性値として、 "org.apache.struts.taglib.html.CANCEL" 値 ( "org.apache.struts.taglib.html.Constants" クラスにおいて "CANCEL_PROPERTY" として定義されています) を指定しなければなりません。

言い換えるなら、 Struts の "CancelTag"("html:cancel") TagLib を使用している JSP を変換したい場合、 対応する "input" タグの "name" 属性値として、 "org.apache.struts.taglib.html.CANCEL" を指定しなければなりません。

目次

表題概要
移行の概要

Struts の struts-mailreader における JSP ファイルから、 PageMixer を用いた Servlet への移行に関する概要。

URI のはめ込み

配置された "Action" に対応する URI のはめ込み。

エラー情報の取り扱い

Struts のエラー情報の取り扱い。

Bean のはめ込み

Bean のフィールド値のはめ込み。

Bean 値による刈り込み

Bean のフィールド値に応じた HTML ページの刈り込み。

反復

Bean のフィールド値に応じた HTML ページの一部の反復。

複雑なフィルタリング

より複雑なフィルタの説明。

Servlet の設定

JSP を置き換える Servlet の設定。

Struts の設定

Struts の設定。