パッケージ jakarta.faces.validator

クラス BeanValidator

java.lang.ObjectSE
jakarta.faces.validator.BeanValidator
実装されたすべてのインターフェース:
PartialStateHolderStateHolderValidatorEventListenerSE

public class BeanValidator extends ObjectSE implements Validator, PartialStateHolder

Bean プロパティの検証を Bean 検証 API に委譲するバリデーター

導入:
2.0
  • フィールドのサマリー

    フィールド
    修飾子と型
    フィールド
    説明
    static final StringSE
    このパラメーターが定義されていて、その値の String 表現で toLowerCase().equals(“true”) を呼び出すと true が返される場合、ランタイムは、シンボリック定数 VALIDATOR_ID の値に等しい validator-id を持つバリデーターをデフォルトのバリデーターのリストに自動的に追加してはなりません。
    static final StringSE
    検証グループの空のリストを識別する正規表現パターン。
    static final StringSE
    このパラメーターが設定されていて、その値の文字列表現で toLowerCase().equals("true" )を呼び出すと、true が返され、validate(jakarta.faces.context.FacesContext, jakarta.faces.component.UIComponent, java.lang.Object) で指定された <validateWholeBean /> に関連する追加のアクションが実行されます。
    static final StringSE
    制約の失敗が見つかった場合に作成される FacesMessage のメッセージ ID。
    static final StringSE
    完全修飾グループ名のリストを文字列として区切るために使用される区切り文字。
    static final StringSE
    Validator インスタンスを取得するために Jakarta Faces によって使用されるオブジェクトを保持する Jakarta Servlet コンテキスト属性の名前。
    static final StringSE
    Jakarta Server Face 仕様で定義されている、このバリデーターの標準バリデーター ID。
  • コンストラクターの概要

    コンストラクター
    コンストラクター
    説明
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    void
    PartialStateHolder を非デルタ追跡状態にリセットします。
    制約をチェックするときに ValidationAPI に渡された検証グループを返します。
    boolean
    デルタ状態の変更が追跡されている場合は true を返し、それ以外の場合は false を返します。
    boolean
    true の場合、このインターフェースを実装するオブジェクトは、状態の保存または復元に参加してはなりません。
    void
    ランタイムは、コンポーネントが初期状態であることを示すために、適切な時間にビュー内のこのインターフェースの各インスタンスで PartialStateHolder.markInitialState() メソッドが呼び出されることを確認する必要があります。
    void
    state オブジェクトのエントリから状態を復元するために必要な処理を実行します。
    インスタンスの状態を Serializable オブジェクトとして取得します。
    void
    setTransient(boolean transientValue)
    このインターフェースを実装するオブジェクトが状態の保存または復元に参加する必要があるかどうかを示します
    void
    setValidationGroups(StringSE validationGroups)
    このバリデーターによってチェックされる検証をフィルタリングするために使用される検証グループのコンマ区切りのリスト。
    void
    validate(FacesContext context, UIComponent component, ObjectSE value)
    Bean 検証制約に従って値が有効であることを確認します。

    クラス java.lang.ObjectSE から継承されたメソッド

    clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, toString, wait, waitSE, waitSE
  • フィールドの詳細

    • VALIDATOR_ID

      public static final StringSE VALIDATOR_ID

      Jakarta Server Face 仕様で定義されている、このバリデーターの標準バリデーター ID。

      関連事項:
    • MESSAGE_ID

      public static final StringSE MESSAGE_ID

      制約の失敗が見つかった場合に作成される FacesMessage のメッセージ ID。このメッセージのメッセージ形式の文字列には、オプションで次のプレースホルダーを含めることができます。

      • {0} は、Bean 検証からの補間メッセージに置き換えられました。
      • {1} は、値がこのメッセージを生成した入力コンポーネントのラベルである String に置き換えられました。

      デフォルトの実装で提供されるメッセージ形式の文字列は、プレースホルダー {0} である必要があります。これにより、メッセージ処理が Bean 検証に完全に委譲されます。開発者は、このメッセージ形式の文字列をオーバーライドして、他の Jakarta Server Face バリデーターメッセージに準拠させることができます。(つまり、コンポーネントラベルを含めること)

      関連事項:
    • VALIDATOR_FACTORY_KEY

      public static final StringSE VALIDATOR_FACTORY_KEY

      Validator インスタンスを取得するために Jakarta Faces によって使用されるオブジェクトを保持する Jakarta Servlet コンテキスト属性の名前。Jakarta Servlet コンテキスト属性が欠落しているか、NULL 値が含まれている場合、Jakarta Server Faces はこの Jakarta Servlet コンテキスト属性を自由に使用して、このバリデーターによってブートストラップされた ValidatorFactory を保管できます。

      関連事項:
    • VALIDATION_GROUPS_DELIMITER

      public static final StringSE VALIDATION_GROUPS_DELIMITER

      完全修飾グループ名のリストを文字列として区切るために使用される区切り文字。

      関連事項:
    • EMPTY_VALIDATION_GROUPS_PATTERN

      public static final StringSE EMPTY_VALIDATION_GROUPS_PATTERN

      検証グループの空のリストを識別する正規表現パターン。

      関連事項:
    • DISABLE_DEFAULT_BEAN_VALIDATOR_PARAM_NAME

      public static final StringSE DISABLE_DEFAULT_BEAN_VALIDATOR_PARAM_NAME

      このパラメーターが定義されていて、その値の String 表現で toLowerCase().equals(“true”) を呼び出すと true が返される場合、ランタイムは、シンボリック定数 VALIDATOR_ID の値に等しい validator-id を持つバリデーターをデフォルトのバリデーターのリストに自動的に追加してはなりません。このパラメーターを true に設定すると、アプリケーションのすべてのビューのすべての入力コンポーネントへの Bean 検証の自動インストールが無効になりますが、手動インストールは引き続き可能です。

      関連事項:
    • ENABLE_VALIDATE_WHOLE_BEAN_PARAM_NAME

      public static final StringSE ENABLE_VALIDATE_WHOLE_BEAN_PARAM_NAME

      このパラメーターが設定されていて、その値の文字列表現で toLowerCase().equals("true" )を呼び出すと、true が返され、validate(jakarta.faces.context.FacesContext, jakarta.faces.component.UIComponent, java.lang.Object) で指定された <validateWholeBean /> に関連する追加のアクションが実行されます。

      導入:
      2.3
      関連事項:
  • コンストラクターの詳細

    • BeanValidator

      public BeanValidator()
  • メソッドの詳細

    • setValidationGroups

      public void setValidationGroups(StringSE validationGroups)

      この検証によってチェックされる検証をフィルタリングするために使用される検証グループのコンマ区切りリスト。validationGroupsArray 属性が省略されているか空の場合、検証グループは ブランチデフォルトから継承されます。ブランチデフォルトがない場合は、Default グループが使用されます。

      パラメーター:
      validationGroups - 検証グループのコンマ区切りリスト (スペースとコンマのみが null として扱われる文字列)
    • getValidationGroups

      public StringSE getValidationGroups()

      制約をチェックするときに検証 API に渡される検証グループを返します。validationGroupsArray 属性が省略されているか空の場合、検証グループは ブランチデフォルトから継承されます。ブランチデフォルトがない場合は、Default グループが使用されます。

      戻り値:
      validatinGroups 属性の値。
    • validate

      public void validate(FacesContext context, UIComponent component, ObjectSE value)

      Bean 検証制約に従って値が有効であることを確認します。

      Validation.buildDefaultValidatorFactory() を呼び出して、ValidatorFactory インスタンスを取得します。

      validationGroupsArray を、このバリデーターのタグハンドラーによってコンポーネントに設定されたバリデーターグループを表す Class[] とします。最初の検索コンポーネントは、検証グループ値の検索を終了します。そのような値が見つからない場合は、検証グループの値として Default のクラス名を使用します。

      valueExpression は、引数コンポーネントUIComponent.getValueExpression(java.lang.String) を呼び出して、リテラル文字列 "value" (引用符なし)を引数として渡したときの戻り値とします。このアプリケーションが Jakarta Expression Language のある環境で実行されている場合は、valueExpression から ValueReference を取得し、valueBaseClase は ValueReference.getBase() を呼び出して返された値、valueProperty は ValueReference.getProperty() を呼び出して返された値とします。Jakarta Expression Language の以前のバージョンが存在する場合は、適切な方法を使用して valueExpression をインスペクションし、valueBaseClassvalueProperty の値を導出します。

      ValueReference を取得できない場合は、何もせずに戻ってください。

      ValueReference.getBase() が null を返す場合は、何もせずに戻ります。

      ValidatorFactory から ValidatorContext を取得します。

      ValidatorFactory.getMessageInterpolator() から返された MessageInterpolator を、UIViewRoot.getLocale() から返された Locale を活用するもので装飾し、ValidatorContext.messageInterpolator(jakarta.validation.MessageInterpolator) を使用して ValidatorContext に保存します。

      validatorContext から Validator インスタンスを取得します。

      jakarta.validation.Validator から jakarta.validation.BeanDescriptor を取得します。BeanDescriptor の hasConstraints() が false を返す場合は、何もせずに戻ります。それ以外の場合は続行します。

      Validator.validateValue(java.lang.Class<T>, java.lang.String, java.lang.Object, java.lang.Class<?>...) を呼び出し、valueBaseClassvalueProperty引数、validatorGroupsArray を引数として渡します。

      返された Set<ConstraintViolation> が空でない場合は、Set の各要素について、FacesMessage を作成します。ここで、要約と詳細は ConstraintViolation.getMessage() の呼び出しからの戻り値です。そのようなすべての FacesMessage インスタンスを Collection にキャプチャーし、ValidatorException(java.util.Collection) に渡します。ENABLE_VALIDATE_WHOLE_BEAN_PARAM_NAME アプリケーションパラメーターが有効で、この Validator インスタンスに Default グループ以外の、または Default グループに加えて検証グループがある場合は、このフィールドが検証に失敗したことを記録して、ツリーの後半にある <f:validateWholeBean /> コンポーネントがクラスレベルの検証をスキップできるようにします。この特定のフィールドがプロパティである Bean。ENABLE_VALIDATE_WHOLE_BEAN_PARAM_NAME が設定されているかどうかに関係なく、新しい例外をスローします

      返された Set が空の場合、ENABLE_VALIDATE_WHOLE_BEAN_PARAM_NAME アプリケーションパラメーターが有効であり、この Validator インスタンスには Default グループ以外の、または Default グループに加えて検証グループがあります。このフィールドが検証に合格したことを記録して、ツリーの後半にある <f:validateWholeBean /> コンポーネントが検証できるようにします。この特定のフィールドがプロパティである Bean のクラスレベルの検証を許可します。

      次で指定:
      インターフェース Validatorvalidate 
      パラメーター:
      context - 処理中のリクエストの FacesContext
      component - 正当性をチェックしている UIComponent
      value - 検証する値
      例外:
      ValidatorException - 検証が失敗した場合
    • saveState

      public ObjectSE saveState(FacesContext context)
      インターフェースからコピーされた説明: StateHolder

      インスタンスの状態を Serializable オブジェクトとして取得します。

      このインターフェースを実装するクラスが、StateHolder を実装するインスタンス(イベントハンドラー、バリデーターなどを含む UIComponent など)への参照を持っている場合、このメソッドはそれらすべてのインスタンスで StateHolder.saveState(jakarta.faces.context.FacesContext) メソッドも呼び出す必要があります。このメソッドは、子とファセットの状態を保存してはなりませんそれは StateManager を介して行われます

      このメソッドは、実装オブジェクトの状態を変更してはなりません。つまり、このコードを実行した後:

       
       Object state = component.saveState(facesContext);
       
       

      component は、実行前と同じでなければなりません。

      このメソッドからの戻り値は Serializable でなければなりません

      次で指定:
      インターフェース StateHoldersaveState 
      パラメーター:
      context - Faces コンテキスト。
      戻り値:
      保存された状態。
    • restoreState

      public void restoreState(FacesContext context, ObjectSE state)
      インターフェースからコピーされた説明: StateHolder

      state オブジェクトのエントリから状態を復元するために必要な処理を実行します。

      このインターフェースを実装するクラスが、StateHolder も実装するインスタンスへの参照を持っている場合(イベントハンドラー、バリデーターなどを備えた UIComponent など)、このメソッドはそれらすべてのインスタンスで StateHolder.restoreState(jakarta.faces.context.FacesContext, java.lang.Object) メソッドも呼び出す必要があります。

      state 引数が null の場合、アクションを実行せずに戻ります。

      次で指定:
      インターフェース StateHolderrestoreState 
      パラメーター:
      context - Faces コンテキスト。
      state - 状態。
    • markInitialState

      public void markInitialState()
      インターフェースからコピーされた説明: PartialStateHolder

      ランタイムは、コンポーネントが初期状態であることを示すために、適切な時間にビュー内のこのインターフェースの各インスタンスで PartialStateHolder.markInitialState() メソッドが呼び出されることを確認する必要があります。インターフェースの実装者は、markInitialState() が呼び出されてから PartialStateHolder.clearInitialState() が呼び出されるまで PartialStateHolder.initialStateMarked() が true を返すことを確認する必要があります。その後、initialStateMarked() は false を返す必要があります。また、インスタンスが initialStateMarked() から true を返す間、実装は StateHolder.saveState(jakarta.faces.context.FacesContext) の実装で変更された状態のみを返す必要があります。

      次で指定:
      インターフェース PartialStateHoldermarkInitialState 
    • initialStateMarked

      public boolean initialStateMarked()
      インターフェースからコピーされた説明: PartialStateHolder

      デルタ状態の変更が追跡されている場合は true を返し、それ以外の場合は false を返します。

      次で指定:
      インターフェース PartialStateHolderinitialStateMarked 
      戻り値:
      初期状態がマークされている場合は true、それ以外の場合は false
    • clearInitialState

      public void clearInitialState()
      インターフェースからコピーされた説明: PartialStateHolder

      PartialStateHolder を非デルタ追跡状態にリセットします。

      次で指定:
      インターフェース PartialStateHolderclearInitialState 
    • isTransient

      public boolean isTransient()
      インターフェースからコピーされた説明: StateHolder

      true の場合、このインターフェースを実装するオブジェクトは、状態の保存または復元に参加してはなりません。

      次で指定:
      インターフェース StateHolderisTransient 
      戻り値:
      一時的な場合は true、それ以外の場合は false
    • setTransient

      public void setTransient(boolean transientValue)
      インターフェースからコピーされた説明: StateHolder

      このインターフェースを実装するオブジェクトが状態の保存または復元に参加する必要があるかどうかを示します

      次で指定:
      インターフェース StateHoldersetTransient 
      パラメーター:
      transientValue - このオブジェクトが 状態の保存または復元に参加しない場合はブール値 true を渡し、それ以外の場合は false を渡します。