→Java関連
→JBoss Seam関連
→JSP関連
概要 †
- JSFはWebアプリケーションのインターフェイスを構築するためのフレームワーク
- JSFはMVCにおけるVとCの機能を提供する
- View→JSFのタグライブラリで拡張されたJSPを用いてWebインターフェイスを記述
- Control→Managed Beanと設定ファイルによってコントローラを実装
- Model→EJB
- Entityはデータモデル
- SessionBeanはイベントリスナー
- JSFでは画面から受け取ったアクションをfaces-config.xmlで指定されたManaged Bean(
=Backing Beanとも言う?)によって処理する。
- ※追記:バッキングBeanはもともとマネージドBeanの属性になるBeanのことらしい(しかしマネージドBeanと同じ意味でも使ってることがあるので文脈次第か)
- ビジネスロジックの実装にEJB3を使用する場合、Managed BeanからEJB3コンポーネントをルックアップ、データの受け渡しが必要
- JavaEE5ではJSFとEJBをつなぐ標準の方法が用意されていない
- そこでJBoss Seamが登場し、両者を統合、管理してシームレスにつなぐことを可能とした
- JBoss SeamではManaged Beanの設定を外部ファイルでなくソース内のアノテーションで行う
- Seamコンポーネントを自動的に適切なManaged Beanにマッピング
- 「JSF (JavaServer Faces)」は、ユーザによりブラウザ等で表示されるページ(UI)とJavaBeans(ビジネスロジック)の間のやり取りをプログラムレスにし、簡単にWebアプリケーションを開発することを可能とするフレームワークです。
- Strutsは画面遷移(MVCモデルのC)に強いのに対して、JSFはユーザインタフェース(MVCモデルの V)に強い
- JSFの特徴
- Webアプリケーションのフォームを簡単に開発可能
- UIとデータのやり取りを簡単に実現
- UIコンポーネントに入力されたデータの型変換、妥当性チェックを標準でサポート
- ページ間の画面遷移をXMLで一括管理可能(Strutsと同様)
- UIコンポーネントとビジネスロジックを分離開発可能
関連Web †
- Oracle ADF
- Oracle ADF Faces is a rich set of user interface components based on the JavaServer Faces JSR (JSR-127). The Oracle ADF Faces Components provide various user-interface components with built-in functionality - such as data tables, hierarchical tables, and color and date pickers - that can be customized and re-used in your application.
- Faces Console
- The Faces Console is a FREE standalone Java Swing application for developing and managing JavaServer Faces-based applications. With the Faces Console you can visually edit JavaServer Faces configuration files as well as JSP Tag Library files.
- The Faces Console also plugs into multiple, popular Java IDEs for seamless management of JavaServer Faces applications from one central development tool.
解説記事 †
- JSFによるWebアプリケーション開発
- Managed Bean = Backing Bean
- Managed Beanとは、アプリケーションのWeb層とビジネス層の間のデータ管理に使用されるJavaBeans、らしい
- JSFの構造を探る
- コンポーネントタグライブラリ(UIのJSPカスタムタグライブラリ)
- コアタグライブラリ(イベントハンドラ、バリデータ、コンバータのJSPカスタムタグライブラリ)
- サーバサイドでステートフルオブジェクトとして表現されるUI
- イベントハンドラ、バリデータ、コンバータ
- JavaBean(データモデル=モデルオブジェクト)
- サーバサイドヘルパークラス
- JSFページ
タグライブラリ †
- JSFのタグライブラリはHTMLタグとcoreタグに別れる
- HTMLタグ
- HTML生成を行う
- ネームスペース <h:〜 で表される
- coreタグ
- HTMLと直接関連しないユーティリティを提供?
- ネームスペース <f:〜 で表される
自前Converterタグライブラリを作る例 †
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Locale;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
public class MyFormatConverter implements Converter {
public Object getAsObject(FacesContext context, UIComponent component, String value) {
// valueをコンバートしたObjectを返す
}
public String getAsString(FacesContext context, UIComponent component, Object value) {
// valueをコンバートした Stringを返す
}
}
Facelets †
- Facelets Developer Documentation
- Faceletsとは
- FaceletsはJSFアプリケーションを作成するためのフレームワーク(PDL)である。
- Faceletsを使用することで、JSFのビューに対してテンプレートを適用できるようになるほか、HTMLタグをJSFコンポーネントのように利用できるなど、いくつかの強力な機能を使用できるようになる。
- JSPコンテナに依存しない
- ネームスペース <ui:〜 で表される
ui:compositionのtemplate属性の使い方 †
- ページの全体デザインのテンプレートみたいなページを用意し、そこにページの中身を差し込むことが可能。
- ui:composition のtemplate属性にその(テンプレートとなる)xhtmlのパスを指定
- 以下のようになることが多い
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:s="http://jboss.com/products/seam/taglib"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:a="https://ajax4jsf.dev.java.net/ajax"
xmlns:rich="http://richfaces.ajax4jsf.org/rich"
template="/layout/template.xhtml">
- /layout/template.xhtml側では、適当にページをデザインした後、中身を差し込みたい場所に
<ui:insert name="body"/>
などと書いておく。nameの値は任意。
- テンプレートを呼び出す側のページにはui:insertの場所に差し込む内容として、ui:define で name="body"としたブロックを用意する。
<ui:define name="body">
(〜適当に差し込みたい中身)
</ui:define>
- ここでui:insertに指定したnameと同じnameでui:defineすることがポイント。
- 名前が違うとスルーされてテンプレートの中に何も表示されない(中身なしのページになる)ので注意
faces-config.xml †
- jsfのメイン設定ファイル
- WEB-INF直下におかれる
- 以下のようなものを設定する
- Managed Bean定義
- ナビゲーション=画面遷移
- ロケール
Tips †
- すべてのJSFツリーの起点には<f:view>タグが必要