| MAP | PageMixer ドキュメント > チュートリアル > Struts 環境における利用 |
このチュートリアルの目的は、 Struts との連携における PageMixer 既定義クラスの利用方法の習得です。
このチュートリアルではこれを、 Struts における JSP ファイルから、 PageMixer を用いた Servlet への移行事例を用いて説明します。
PageMixer をご存知無い方は、 "PageMixer の利用" を先にご覧下さい。
このチュートリアルのソースおよび設定ファイルは、
配布物における
"src/demo/struts/src" および
"src/demo/struts/war" 配下にあります。
注意: 本チュートリアルで示したクラス図およびサンプルソースは、 配布物との厳密な一致よりも、 説明の簡便さを優先しました。
チュートリアルでの記述と配布物の違いに、 混乱しないことを願います。
備考: 本チュートリアルは、 ページのコンパクトさよりも、 1ページでの情報一覧性を優先させるために、 大きな HTML ページから構成されています。
大きなページとそうでないページのどちらがお好きですか?
本チュートリアルの各節において共通の事柄がいくつかあります。
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 との相対性を実行前に決定できないため、 例えば、 404(Not Found) エラー用のテンプレート HTML にトップページへのリンクを含めることは出来ません。
base URI 相対指定:位置の冒頭にスラッシュ("/")が含まれず、
且つ HTML ページが base タグを持つ場合です。
このケースでの問題は
base が要求 URI と同じ値を持つ場合、
"要求 URI 相対" と同じであり、
大抵はそうであるように見受けられます。
この問題は、
base にコンテキストルートパスをはめ込むことで解決可能です。
位置の冒頭にスラッシュ("/")が含まる場合です。
このような記述をする場合、 配備の文脈に依存するようになるため、 ウェブアプリケーションは可搬性の無いものになります。
Struts 連携の際に PageMixer フレームワークは、
token 列中に現れる base HTML タグの href 属性に、
Servlet コンテキストのルート位置をはめ込みます。
これにより、
Struts Action のものを除いた、
アプリケーションのローカル資源の位置を、
要求 URI 相対ではなく Servlet コンテキストルート相対で指定することができます。
但し、Struts Action の位置は、
設定ファイル(群)において指定されたものと厳密に一致しなければなりません。
注意:
PageMixer フレームワークは、
HTML ページへ自動的に base タグを埋め込むことはしませんので、
明示的に記述する必要があります。
十分なドキュメント化がされていない事柄:
"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 のはめ込み | 配置された " |
| エラー情報の取り扱い | Struts のエラー情報の取り扱い。 |
| Bean のはめ込み | Bean のフィールド値のはめ込み。 |
| Bean 値による刈り込み | Bean のフィールド値に応じた HTML ページの刈り込み。 |
| 反復 | Bean のフィールド値に応じた HTML ページの一部の反復。 |
| 複雑なフィルタリング | より複雑なフィルタの説明。 |
| Servlet の設定 | JSP を置き換える Servlet の設定。 |
| Struts の設定 | Struts の設定。 |
| MAP | PageMixer ドキュメント > チュートリアル > Struts 環境における利用 |