skillup

技術ブログ

Java

JSFのテンプレート機能

投稿日:

保守性の向上で必要な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はまだまだ無限の可能性を秘めてますね・・・

参考リンク

http://d.hatena.ne.jp/shin/20100712/p1

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

 

-Java
-,

執筆者:


comment

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

関連記事

no image

JPAでの多対多のリレーション

以前、このエントリーでJPAのリレーションについて説明しました。 今回は多対多について説明します。 Contents1 テーブル構成2 ソース2.1 CDのエンティティ2.2 Artistのエンティテ …

no image

開発環境と本番での設定ファイル変更

開発と本番で設定ファイル自体(web.xmlなど)はわけると思うのですが、以前はわからず、開発のものと本番のものを手動でわけていました。 Javaでどうやってやるかを調べたところ、pomにかなり便利な …

no image

try~catch~finallyで気を付けること

JavaでExceptionが発生したとき、基本的にはtry~catch~finallyをつかっているのですが、今回Exceptionが吐かれないという事態があったのでメモします。 [crayon-5 …

no image

Fileオブジェクトの操作

業務でテキストファイルを読み込んで、別形式に変換して出力みたいなアプリを作ったときにファイルオブジェクトについていろいろ調べたんでまとめておきます。 Contents1 ファイルオブジェクトとは?2 …

no image

入出力操作

Javaの出力処理について書きます。 下記リンクが非常に詳しかったので、これをもとにまとめてみたんですが、咀嚼できてないっぽい・・・・ もう1~2度修正がひつようかも。 http://www.arti …