skillup

技術ブログ

Java

JSFのテンプレート機能

投稿日:2015年7月11日 更新日:

保守性の向上で必要なHTMLの考え方

静的なサイトであっても、動的なサイトであっても保守性を向上させるためにもすべて静的なHTMLファイルで書くのは得策ではありません。

多くのサイトでは

ほぼ決まっている部分

  • ヘッダー
  • 左側のコンテンツ
  • フッター

動的(ページにより変わる)部分

  • 中のコンテンツの部分

に分かれていることが一般的です。

例えばテンプレートのようなものを作り、「決まっている部分」と「中のコンテンツの部分」と分けておき、それを組み合わせることでページを作ります。

JSFでも当然これをサポートするような仕組みがあります。

サンプル

まず下記のような2つのページを表示することを考えます。

ページ1

page_1

ページ2

page_2

ファイル構成

ファイル構成は下記のようになります。

  • ヘッダー header.xhtml
  • サイドバー  left.xhtml
  • フッター footer.xhtml
  • テンプレート newTemplate.xhtml
  • ※アクセスファイル site.xhtml
  • アクセスファイル2 site2.xhtml

※URLで直接見えるファイルのことです。

ソース

実際のソースは下記のようになります。

静的なファイル群

気を付けるべきはui:compositionのタグの中しか読み込まれないので、その前後に書いても出力されません。

その中は通常のHTMLかJSFで定義されているタグを使うことができます。

ヘッダー header.xhtml

 

サイドバー  left.xhtml

 

フッター footer.xhtml

 

テンプレート

もっとも大事な部分になります。

基本的にここでファイルの構成をきめることになりますので、

  • CSSやJSなどの読み込みを行う
  • 静的なページの読み込みは<ui:inclue src=”~”>で行う
  • 動的な部分は<ui:insert name=”~”>で定義しておく

テンプレート newTemplate.xhtml

アクセスファイル

URLから直接呼ばれるファイルです。テンプレートの読み込みと、動的な部分の定義を行います。

ポイントとしては

  • 動的な部分の定義、<ui:define name=”~”>の部分がtemplateのinsertに対応する。(このnameは当然templateのinsertのnameと一緒。)
  • ui:compositonの中のみが読み込まれる。

アクセスファイル site.xhtml

アクセスファイル2 site2.xhtml

また動的な部分をさらに別ファイルにする場合は、site.xhtmlの場合、下記のように書いてもOKです。

なお、headerやfooterなどもページによっては変えることがあると思いますので、その場合はtemplateで<ui:insert>で定義しておき、アクセスポイントで<ui:define>を使います。

Netbeansでの補完機能

Netbeansを使うと、

テンプレートは

右クリック→新規→その他→「JavaServerFaces」→「Faceletsテンプレート」

で作れます。

CSSなんかも適当に作ってくれるのでこれを使えばモックアップ的なものはかなり高速に作れます。

Netbeansはまだまだ無限の可能性を秘めてますね・・・

参考リンク

JSF 2.0のテンプレート機能を使う

キャプチャもあって大変わかりやすかったです。

-Java
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

jenkins構築

いままでjenkinsについての記事を書いていなかったので記録しておこうと思います。 Contents1 前提条件2 jenkins構築3 設定ファイル変更(ポート&URL変更)4 セキュリティ有効化 …

no image

RedmineAPI活用法

自社ではRedmineで基本的にタスク管理をしておりまして、チケット作成に手当がついたりします。 Redmine単体でもいろいろな機能があるのですが、 今月の作成したチケットと完了したチケットを手当と …

no image

文字列操作(String系)

Javaの文字列について書きます。 Contents1 StringとStringBuilder1.1 文字列の追加はStringBuilder1.2 文字列の参照はString StringとStr …

no image

mavenのリモートリポジトリについて

JPAでO/Rマッパーに慣れてからというもの通常のSQLをごりごり書くのが億劫になってきました。 億劫というかいろいろとリスクがありますね。 問題点としてはコンパイルするときにエラーが検知できなかった …

no image

文字列変換系処理まとめ

Javaで文字列の変換(全角、半角など)の処理のまとめです。 ブログに記事として書こうと思ったのですが、丸々コピペになってしまうので、それじゃあ元リンクを紹介したほうがいいかなと思い、今日は基本的にリ …