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

配列の参照の仕方

変数が存在しているにもかかわらず値が入っていないときは、プログラミングではNULLという表記をします。(ちなみに空白が入っているのとは違います。) これはプログラマにとってはほぼ常識的な内容なのですが …

no image

型情報の取得・活用について

Javaで抽象度の高い実装を行うときに必要となる型情報の活用法について。 できるとできないとでプログラムの応用範囲が変わってくるのでメモっときます。 こちらのエントリーと合わせて読むといいと思います。 …

no image

GlassFish&Junitの不具合

JavaEE(JSF+JavaBean+EJB+JTA)でアプリを製作しているのですが、EJBの部分のjunitができないことが判明しました。 正確に言うとラムダ式を使うと不具合がでます。原因としては …

no image

型パラメータに関して その2

Javaでオブジェクト指向に基づいたコーディングをするために必須であり、最初の難関だったのが型パラメータでした。 Contents1 型パラメータが必要なケース2 型パラメータの制限3 クラスインスタ …

no image

O/Rマッパー iciqlについて

以前、このブログでも紹介したO/Rマッパーのiciqlについて、使い方や問題点がある程度わかったので書いておきます。 Contents1 インストール2 自動生成3 注意点3.1 Date型のインポー …