#topicpath ---- #contents **Tilesとは [#pb14829b] Tilesとは、JSPでいうInclude機能を強化したフレームワークで、Webサイトの保守性をアップする為のものだそうです。設定ファイルを間にかませることで、ソースコードの修正なしにIncludeするJSPファイルを切り替えたり、設定を継承したり、いろいろなことができそうです。 **とりあえず練習っつうことで [#w39ebeea] ***ファイル構成 [#y3c1b657] とりあえずやってみましょう。サンプルのアプリを作ってみます。~ ファイル構成は以下のようになりました。 #ref(ファイル構成.png) ~ -/WEB-INF/struts-config.xml <-tilesの設定ファイルの名前とかを記述します -/WEB-INF/tiles-defs.xml -/layoutBase.jsp -/menubar.jsp -/body.jsp -/index.jsp <- 最終的に呼び出すファイル #ref(image.png) ***それぞれの内容 [#l585ad42] struts-config.xmlは以下を追加しました。 <plug-in className="org.apache.struts.tiles.TilesPlugin"> <set-property property="moduleAware" value="false" /> <set-property property="definitions-debug" value="0" /> <set-property property="definitions-parser-details" value="0" /> <set-property property="definitions-parser-validate" value="false" /> <set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" /> ↑Tilesの設定ファイルの場所 </plug-in> tiles-defs.xmlは以下のようになりました。 <tiles-definitions> <definition name="layoutBase" path="/layoutBase.jsp"> ↑pathで指定したJSPファイルを、nameで指定した名称でincludeする <put name="menubar" value="/menubar.jsp" /> ↑上のJSP(layoutBase.jsp) 内で、呼び出すJSPの指定。 <put name="body" value="/body.jsp" /> ↑上のJSP(layoutBase.jsp) 内で、呼び出すJSPの指定。 </definition> </tiles-definitions> layoutBase.jsp は以下の記述をしました。 <table border="0" style="width: 100%"> <tr> <%-- メニューの記述 --%> <td id="menubar"><tiles:insert attribute="menubar" /></td> ↑putタグはattribute属性で呼び出す <%-- ボディの記述 --%> <td id="body"><tiles:insert attribute="body" /></td> ↑putタグはattribute属性で呼び出す </tr> </table> index.jsp は以下の記述をしました。((insertのdefinition属性はtilesの設定ファイルのdefinitionタグに対応するみたい。attribute属性は設定ファイルのputタグのname属性に対応するみたい)) <%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %> <tiles:insert definition="layoutBase" flush="true"/> ↑definitionタグはdefinition属性で呼び出す ***追加作業 [#a33081db] 今回はindex.jspで <tiles:insert definition="layoutBase" flush="true"/> として、struts-config.xmlでindex.jspに遷移させるというやり方をしましたが、もっとよりよい方法がありました。直接struts-config.xmlで、layoutBaseというtiles-defs.xmlで定義した名称が記述できます。ようするに、 <action name="hoge" path="/foo" scope="request" type="kino.actions.FooAction"> <!-- <forward name="success" path="/index.jsp"></forward> --> <-始めこう書いてたけど <forward name="success" path="layoutBase"></forward> <-こういう書き方 </action> って書くことができます。こうすることによって、確かに保守性はあがるかも。 ***感想 [#qafe8535] とりあえずいろいろ試行錯誤しましたが、上の内容で稼動しました。今んところまだ、設定ファイルでエイリアスできる以外はJSPのインクルード機能と一緒じゃん、くらいしか感じませんが、継承とかもっと色々出来そうですね。引き続き勉強します。((フレームセットを作る必要がないとか、いろいろありそうですね。かなり楽かも、これ使うと。)) 引き続き[[Struts/TilesのTIPS集]]へ ---- この記事は #vote(おもしろかった[110],そうでもない[19]) #comment #topicpath SIZE(10){現在のアクセス:&counter;}