Top / Struts / Tilesの基礎

Tilesとは

Tilesとは、JSPでいうInclude機能を強化したフレームワークで、Webサイトの保守性をアップする為のものだそうです。設定ファイルを間にかませることで、ソースコードの修正なしにIncludeするJSPファイルを切り替えたり、設定を継承したり、いろいろなことができそうです。

とりあえず練習っつうことで

ファイル構成

とりあえずやってみましょう。サンプルのアプリを作ってみます。
ファイル構成は以下のようになりました。

ファイル構成.png


  • /WEB-INF/struts-config.xml <-tilesの設定ファイルの名前とかを記述します
  • /WEB-INF/tiles-defs.xml
  • /layoutBase.jsp
  • /menubar.jsp
  • /body.jsp
  • /index.jsp <- 最終的に呼び出すファイル
image.png

それぞれの内容

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 は以下の記述をしました。*1

<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>
<tiles:insert definition="layoutBase" flush="true"/>
	         ↑definitionタグはdefinition属性で呼び出す

追加作業

今回は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>

って書くことができます。こうすることによって、確かに保守性はあがるかも。

感想

とりあえずいろいろ試行錯誤しましたが、上の内容で稼動しました。今んところまだ、設定ファイルでエイリアスできる以外はJSPのインクルード機能と一緒じゃん、くらいしか感じませんが、継承とかもっと色々出来そうですね。引き続き勉強します。*2

引き続きStruts/TilesのTIPS集


この記事は

選択肢 投票
おもしろかった 212  
そうでもない 30  

Top / Struts / Tilesの基礎

現在のアクセス:70055


*1 insertのdefinition属性はtilesの設定ファイルのdefinitionタグに対応するみたい。attribute属性は設定ファイルのputタグのname属性に対応するみたい
*2 フレームセットを作る必要がないとか、いろいろありそうですね。かなり楽かも、これ使うと。

添付ファイル: fileimage.png 2167件 [詳細] fileimage.swf 1010件 [詳細] fileファイル構成.png 2556件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-08-30 (水) 14:37:02 (80d)