[JSF]バリデーションクラス

JavaのWebアプリケーションフレームワークであるJSFを仕事で使う機会があったので、
備忘録を残そうと思います。

         使用環境

  • NetBeans8.2
  • JavaEE7.0
  • GlassFish4.1.1

JSFのバリデーションクラス

前回の続きでJSFでのバリデータの紹介になります。
今回はバリデーション用のクラスの作成を行い、バリデーションを定義したメソッドを自作します。

【バリデーションクラス】

【view】

【ManagedBean】(前回と変わりませんが一応)

【実行例】
JSF5-1
JSF5-2
JSF5-3

必要な作業は主に3つです。

  • バリデーションクラスを作成し、FacesValidatorのvalue属性で名前を設定
  • Validatorインターフェースを実装し、validateメソッドをオーバーライド。(バリデータ定義を行う)
  • viewにて作成したバリデータを適用したいコンポーネントのvalidator属性に、バリデーションクラスに設定した名前を指定
  • 以上の工程でそれぞれのコンポーネントに自由にバリデータの設定ができます。

    Bean Validationの利用

    ここまでに紹介したバリデータの設定方法以外にもJavaにはBeanValidationという
    一般的によく知られた方法があります。
    こちらはJSFに限らずどのプロジェクトでも使用可能な方法なので、個人的に一番おすすめです。

    【view】

    【BeanValidation】

    【実行例】
    JSF5-1

    BeanValidationの変数inputの宣言の際、@Size制約を付与しています。
    こちらは標準で定義された制約条件で、他にも以下のようなものが存在します。

    • @Null:nullであることを検証
    • @NotNull:nullでないことを検証
    • @AssertFalse:値がFalseであることを検証
    • @AssertTrue:値がTrueであることを検証
    • @Size:Stringは文字数を検証。Collectionなどは要素数を検証
    • @Min:指定の最小値以上であることを検証
    • @Max:指定の最大値以下であることを検証
    • @DecimalMin:最小値を設定。@Minと違い境界値を含まないように設定可能
    • @DecimalMax:最大値を設定。@Maxと違い境界値を含まないように設定可能
    • @Digits:数値の整数部の桁数、小数部の桁数を検証
    • @Past:日時が過去であるか検証
    • @Future:日付が未来であることを検証
    • @Pattern:正規表現を指定

    これらの制約条件を設定すると、そのパラメータに対し値を設定する際に自動で検証が行われます。
    もし満たせてない場合はリクエストが中断され、上記サンプルで本来実行されるべき
    actionListener=”#{managedBean.test()}のtestメソッドの呼び出しは行われず、
    デフォルトで設定されたエラーメッセージを付与したレスポンスが返ります。

    バリデーションについては以上になります。

    シェアする

    • このエントリーをはてなブックマークに追加

    フォローする