2.1.2参考サイトSpringFrameworkhttp://projects.spring.io/spring-framework/Thymeleafhttp://www.thymeleaf.org/Thymeleaf-extras-tiles2(GitHub)https://github.com/thymeleaf/thymeleaf-extras-tiles2/参考にさせていただいたソースhttps://github.com/rwinch/spring-modern-templating【概要】Thymeleafでベースとなるテンプレートを使用できるものです。ApacheTilesのようなものをThymeleafでも使えるようになります。Thymeleaf本体のドキュメントを読むとfragmentsを使えば別ページを参照することができます。ページ共通のものを使用するとなると個別のページにth:includeで指定する必要があるみたいです。(知識不足なので知らないだけの可能性がありますが・・・)Thymeleaf-extras-tiles2ではベースのHTMLを作ってそこを参照させることができます。今回はSpring4とThymeleafを連携させます。必要なライブラリは↓です。</dependencies>【ディレクトリ構成】ページのディレクトリ構成は↓のようにしています。今回はログイン画面を作り、ログイン後に何かしらのトップ画面を表示させるようにしています。レイアウトのテンプレートになるHTMLが含まれています。ログイン画面用のHTMLが含まれています。ログイン後に表示させるHTMLが含まれています。テンプレートを使用するのはこの配下のページです。ログイン後に表示させるHTMLが含まれています。Springの設定ファイル。【Java】ログイン画面を表示するためのログインコントローラとログイン後に表示するトップコントローラの2つを作ります。リクエストURLと遷移先は↓のようにしています。}}【ApplicationContext】applicationContext.xmlの設定です。</bean></beans>[Thymeleaf-extras-tiles2の設定]設定ファイルの参照先を指定します。WEB-INF配下にあるtiles-defs.xmlを指定します。[テンプレートエンジンの設定]additionalDialectsにorg.thymeleaf.extras.tiles2.dialect.TilesDialectクラスを指定します。[表示の設定]viewClassにorg.thymeleaf.extras.tiles2.spring4.web.view.ThymeleafTilesViewクラスを指定します。続いてtiles-defs.xmlの設定です。/></tiles-definitions>[tiles-definitionsタグ]タグの下にタグでテンプレートなどの参照先を設定していきます。このファイル上に定義されていないもパスがコントローラから返された場合、エラーとなります。そのため、全ての戻り値に対応する必要があります。[definitionタグ]name属性とコントローラの戻り値をマッチングさせています。template属性を指定して、ページの参照させます。template="/login/login"/>この指定はコントローラから「/login/login」が返されたら、name属性が「/login/login」の箇所からテンプレートを参照します。template属性の指定も「/login/login」となっていますので、ThymeleafTilesConfigurerに指定したprefixとsufixがくっついたファイルを参照します。今回のサンプルでは「/WEB-INF/view/login/login.html」になります。/>name属性にはワイルドカードが使用できます。name属性が「/menu/**」の箇所は「/menu」で始まる場合、「/WEB-INF/view/layout/baseLayout.html」を参照するという設定になります。ワイルドカードの部分はtemplate属性に対して変数として扱えます。template属性上で「{1}」となっている箇所はワイルドカードの値で置き換えられます。「**」を指定した場合、サブディレクトリも検索してくれます。template属性の指定で「::」のあとに指定した値はfragmentのIDとして扱われます。contentDetail"」と言う指定は「/WEB-INF/view/menu/hoge.html」ファイルの中で「th:fragment="contentDetail"」と指定された箇所を参照すると言う設定になります。[put-attributeタグ]タグの下に指定します。</definition>後述しますがbaseLayout.htmlではいくつかのページを参照したり、ページごとにタイトルを変更したりと言うことをさせています。タグはそいうったテンプレート内で使用したい属性を定義することができます。name属性で指定した値はテンプレート内で参照することができます。value属性で指定した値で他のdefinitionを参照します。definitionでワイルドカードを使用している場合、value属性でも同じく参照することができます。【HTML】[baseLayout.html]コントローラからの返却値が「/menu」で始まる場合に参照するHTMLです。</body></html>tiles:replaceにtiles-defs.xmlで指定したput-attributeの名前を指定すると描画時に置き換えてくれます。置き換えられるので有効にはなりません。[top.html]各ページのコンテンツを表示するためのHTMLです。</body></html>タグ内にtiles:fragmentを指定するとbaseLayout.htmlの中身がこちらのファイルで指定したものに置き換わります。属性値はtiles-defs.xmlで指定したものと一致させる必要があります。/>[header.html]ヘッダー部分です。ここは見せられないよ。置き換え時には範囲対象外となるため表示されません。[menu.html]メニュー用のHTMLです。新しいことはしていません。</body></html>[login.html]ログイン用のHTMLはbaseLyaout.htmlを使わないページです。</body></html>bootstrapを使っていますが、特別なことはしていません。作成した画面を見てみます。HTML通りの画面が表示されます。続いてログイン後の画面です。ヘッダー、メニュー、コンテンツ、タイトルとtop.htmlとheader.html、menu.htmlの内容が表示されています。ちなみにbaseLayout.htmlのファイル自体を表示した場合はこうなります。【まとめ】Thymeleaf-extras-tiles2を使えばThymeleafでもApacheTilesのようなことが簡単にできます。tiles-defs.xmlと全てのコントローラの戻り値を対応させないといけないので、ディレクトリ構成か設定ファイルの書き方には一工夫が必要になりそうです。通常のHTMLとしても使える状態は保たれているので使ってもよさそうだなと個人的には思いました。今回はロックについてです。今回はEJB3.1を使ったトランザクション管理についてです。【前...2012-09-15複合PK今回は複合PKです。月別アーカイブはてなブログをはじめよう!gloryofさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。