Java > JavaEE > WebTier > DevWithJSF

  • JSFアプリケーションのサーバサイド必要な実装
    • 管理ビーン
    • コンバータ
    • イベントハンドラ
    • バリデータ
  • 管理ビーンとBean Validationについて

Managed Beans

  • 管理ビーンはページのコンポーネントに関連づけられる

Creating a Managed Bean

  • 管理ビーンの構成要素
  • 引数なしコンストラクタ
  • コンポーネントから参照されるプロパティ
    • コンポーネントの値
      • プリミティブ、数値型、コンバータで変換できる型
    • コンポーネントのインスタンス
      • 期待されるコンポーネントと同じ型
    • コンバータのインスタンス
      • 期待されるコンバータと同じ型
    • リスナーのインスタンス
      • 期待されるリスナーと同じ型
    • バリデータのインスタンス
      • 期待されるバリデータと同じ型
  • メソッド
    • コンポーネント値のバリデート
    • コンポーネント生成イベントのハンドリング
    • 次ページ決定のための処理

Using the EL to ReferenceManaged Beans

  • EL式によってページから管理ビーンを参照
    • コンポーネント値、コンポーネントオブジェクトを管理ビーンのプロパティに紐づける
    • 管理ビーンのメソッドを参照する
  • EL式の遅延評価#{...}によって、式の評価を適切なライフサイクル中のフェーズで行える
    • イベントハンドリング->変換->バリデーション->データ送信
  • 外部のオブジェクトにデータを保存すめに、多くのJSFコンポーネントタグの属性はlvalue式をつかう。
  • いくつかのJSFコンポーネントタグの属性は、Method式を許可している。
    • イベントのハンドリング
    • バリデート
    • コンバート
  • Value式は以下のデータを参照できる
    • ビーンのプロパティ
    • リスト
    • マップ
    • 配列
    • 暗黙オブジェクト
    • リソースバンドル
  • Value式でコンポーネントを管理ビーンのプロパティと紐づけられる
    <inputText binding="#{bean.myComponent}" />
    
  • ValueExpressionやMethodExpressionをカスタムコンポーネントプロパティにすることでVEやMEが使えるようになる

Writing Bean Properties

  • コンポーネント値を管理ピーンプロパティにバインド
    • value属性
    • プロパティとコンポーネント値が同じ型であること
  • コンポーネント、バリデータ、コンバータ、リスナーのインスタンスを管理ビーンプロパティにバインド
    • binding属性
    • プロパティと対応するインスタンスが同じ型であること

Writing Properties Bound to Component Values

  • 管理ビーンのプロパティのコンポーネントの型に一致させる
    • コンポーネントがUIInput, UIOutput, UISelectOneの時
      • 基本的なプリミティブ、数値型
      • コンバータで変換される型
    • コンポーネントがUIDataの時
      • ビーン、ビーンの配列、リスト
      • ResultSet,Result,RowSet
    • コンポーネントがUISelectBooleanの時
      • boolean, Boolean
    • コンポーネントがUISelectManyの時
      • 標準的な型のリスト、配列
    • コンポーネントがUISelectItemの時
      • UISelectMany, UISelectOneコンポーネント中で、1つの値を表す
      • javax.faces.model.SelectItem
    • コンポーネントがUISelectItemsの時
      • UISelectMany, UISelectOneコンポーネントの子コンポーネント
      • SelectItemのセット、配列、リスト、POJO

Writing Properties Bound to Component Instances

  • 管理ビーンのプロパティにコンポーネントのインスタンスを保持させる
    • ページ上でbinding属性で管理ビーンのプロパティを参照
    • 管理ビーンからコンポーネントの属性を動的に設定可能
    • 管理ビーンのプロパティはコンポーネントに対応した型

Writing Properties Bound to Converters, Listeners, or Validators

  • 管理ビーンのプロパティにコンバータ、リスナー、バリデータの実装を保持させる
    • ページ上でbinding属性で管理ビーンのプロパティを参照
    • 管理ビーンから、コンバータ、リスナー、バリデータの属性値を設定可能

Writing Managed Bean Methods

  • 管理ビーンのメソッドで行われるふるまい
    • ナビゲーションを決定する処理
    • Actionイベントのハンドリング
    • コンポーネント値のバリデーション
    • ValueChangeイベントのハンドリング
  • 同じコンポーネントのデータを参照する上記メソッド群を同じ管理ビーンにまとめると良い

Writing a Method to Handle Navigation

  • アクションメソッド(ナビゲーション処理メソッド)
    public Object xxx()
    
    • 返却値は遷移先ページの論理名
      • コンポーネントタグのaction属性で参照
      • nullの場合は、新規ビューを生成せずにユーザ入力値を残したままページを描画する
      • Enumも利用可能

Writing a Method to Handle an Action Event

  • Actionイベントをハンドルするメソッド
    public void xxx(ActionEvent)
    
    • コンポーネントタグのactionListener属性で参照
      • コンポーネントはActionSource実装の必要あり

Writing a Method to Perform Validation

  • バリデートメソッド
    public void xxx(FacesContext, UIComponent, Object)
    
    • コンポーネントタグのvalidator属性で参照
    • コンポーネントはUIInput実装の必要あり

Writing a Method to Handle a Value-Change Event

  • ValueChangeイベントをハンドルするメソッド
    public void xxx(ValueChangeEvent)
    
    • コンポーネントタグのvalueChangeListener属性で参照

Using Bean Validation

  • Bean ValidationはJavaEE6で利用可能になったバリデーションのモデル
    • ビーンのフィールド、メソッド、クラスに制約のアノテーションをつける
    • 制約は、ビルドインまたはカスタム
  • ビルドインの制約
    • @AssertFalse
    • @AssertTrue
    • @DecimalMax
    • @DecimalMin
    • @Digits
    • @Future
    • @Max
    • @Min
    • @NotNull
    • @Null
    • @Past
    • @Pattern
    • @Size
  • 管理ビーンは制約がついていれば自動的にバリデートされる
  • <h:messages>でバリデーションのメッセージが表示される

Validating Null and Empty Strings

  • JSFのテキストコンポーネントに紐づけられる管理ビーンのプロパティは、入力なしの場合は空文字
  • nullと空文字を同じように扱いたい場合は、コンテキストパラメータを指定する
    • javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL : true
    • 入力なしの場合は、nullで設定されるようになる
最終更新:2012年08月30日 07:59
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。