2009年4月10日金曜日

Struts応用(六):Tilesの関連設定手順

※下記ソースを使う時、()→<>に変更してください。
Tilesタグは、画面のテンプレート化と画面設計の共通化のため使われるStrutsのタグです。
1.Tilesプラグインを有効にする設定:
各struts-config.xmlに下記の設定を追加する
(plug-in className="org.apache.struts.tiles.TilesPlugin" )
(set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" /)
(set-property property="moduleAware" value="true" /)
(/plug-in)
※注:moduleAwareの値はfalseであれば、Web.xmlにある一番目のモジュールのstruts-config.xml
にある該当設定が有効、かつ、他のすべてのモジュールにも有効;trueの場合、自分のモジュール
だけに有効

2.自定義Tilesタグの作成:
ファイル「tiles-defs.xml」を編集し、自定義ものを追加
例:
(tiles-definitions)
(definition name="tilesName" path="/layout.jsp")
(put name="title" value="タイトルです"/)
(put name="menu" value="/menu.jsp"/)
(put name="contents" value="/contents.jsp"/)
(/definition)
(/tiles-definitions)
これで「layout.jsp」というテンプレートの画面レイアウト
を定義した

3.Tilesタグプラグイン定義ファイルの参照:
二つの方法がある
・JSPのヘーダ部に直接該当定義ファイルを参照
(%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %)
・web.xmlにtaglibの定義ファイル参照URIを定義し、JSPから参照
「web.xmlの定義」
(taglib)
(taglib-uri)/WEB-INF/struts-tiles.tld(/taglib-uri)
(taglib-location)/WEB-INF/struts-tiles.tld(/taglib-location)
(/taglib)
※この場合、tldファイルが/web-inf/下に追加しないといけない
「JSPの参照」
(%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %)
※方法一は、直接Webからファイルを参照するから、通信とバージョン確定が
難しいから、二番目の方法がいいでしょう

4.JSPにTilesタグの利用:
①上記「3」の参照方法で定義ファイルのURI参照をJSPに追加
②struts-tiles.tldに定義されているタグの方法が利用できる
例:(layout.jsp)
(%@taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %)
(html:html)
(body)
(table width="100%")
(tr colspan="2")
(td align="center")(tiles:getAsString name="title"/)(/td)
(/tr)
(tr)
(td width="20%" valign="top")(tiles:insert attribute="menu"/)(/td)
(td width="80%" valign="top")(tiles:insert attribute="contents"/)(/td)
(/tr)
(/table)
(/body)
(/html:html)

5.layout.jsp画面の遷移定義:
該当モジュールのstruts-config.xmlにあるActionタグに下記属性を追加する
例:
(action-mappings)
(action name="formName" path="/MyAction" type="pkg.MyAction" validate="false" scope="request")
(forward name="success" path="tilesName"/)(!--該当pathの値は、 tiles-defs.xml」に
定義されているdefinationのnameの値と同じ名前--)
(forward name="error" path="error.jsp"/)
(/action)
(/action-mappings)
これでTilesタグを使っているJSP「layout.jsp」への遷移ができる

0 件のコメント: