#author("2022-10-20T02:09:10+00:00","","")
#author("2022-10-20T02:09:13+00:00","","")
#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(おもしろかった[239],そうでもない[40])
#vote(おもしろかった[240],そうでもない[40])


#comment
#topicpath


SIZE(10){現在のアクセス:&counter;}

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS