- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2023-04-10T02:59:36+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(おもしろかった[115],そうでもない[20])
#vote(おもしろかった[241],そうでもない[40])
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}