クラス BeanValidator
- java.lang.ObjectSE
-
- jakarta.faces.validator.BeanValidator
- 実装されたすべてのインターフェース:
PartialStateHolder
、StateHolder
、Validator
、EventListenerSE
public class BeanValidator extends ObjectSE implements Validator, PartialStateHolder
Bean プロパティの検証を Bean 検証 API に委譲するバリデーター。
- 導入:
- 2.0
フィールドサマリー
フィールド 修飾子と型 フィールド 説明 static StringSE
DISABLE_DEFAULT_BEAN_VALIDATOR_PARAM_NAME
このパラメーターが定義されていて、その値のString
表現でtoLowerCase().equals(“true”)
を呼び出すとtrue
が返される場合、ランタイムは、シンボリック定数VALIDATOR_ID
の値に等しい validator-id を持つバリデーターをデフォルトのバリデーターのリストに自動的に追加してはなりません。static StringSE
EMPTY_VALIDATION_GROUPS_PATTERN
検証グループの空のリストを識別する正規表現パターン。static StringSE
ENABLE_VALIDATE_WHOLE_BEAN_PARAM_NAME
このパラメーターが設定されていて、その値の文字列表現で toLowerCase().equals("true" )を呼び出すと、true
が返され、validate(jakarta.faces.context.FacesContext, jakarta.faces.component.UIComponent, java.lang.Object)
で指定された<validateWholeBean />
に関連する追加のアクションが実行されます。static StringSE
MESSAGE_ID
制約の失敗が見つかった場合に作成されるFacesMessage
のメッセージ ID。static StringSE
VALIDATION_GROUPS_DELIMITER
完全修飾グループ名のリストを文字列として区切るために使用される区切り文字。static StringSE
VALIDATOR_FACTORY_KEY
Validator インスタンスを取得するために Jakarta Faces によって使用されるオブジェクトを保持する Jakarta Servlet コンテキスト属性の名前。static StringSE
VALIDATOR_ID
Jakarta Server Face 仕様で定義されている、このバリデーターの標準バリデーター ID。
コンストラクターのサマリー
コンストラクター コンストラクター 説明 BeanValidator()
メソッドのサマリー
すべてのメソッド インスタンスメソッド 具象メソッド 修飾子と型 メソッド 説明 void
clearInitialState()
PartialStateHolder を非デルタ追跡状態にリセットします。StringSE
getValidationGroups()
制約をチェックするときに ValidationAPI に渡された検証グループを返します。boolean
initialStateMarked()
デルタ状態の変更が追跡されている場合はtrue
を返し、それ以外の場合はfalse
を返します。boolean
isTransient()
true の場合、このインターフェースを実装するオブジェクトは、状態の保存または復元に参加してはなりません。void
markInitialState()
ランタイムは、コンポーネントが初期状態であることを示すために、適切な時間にビュー内のこのインターフェースの各インスタンスでPartialStateHolder.markInitialState()
メソッドが呼び出されることを確認する必要があります。void
restoreState(FacesContext context, ObjectSE state)
state オブジェクトのエントリから状態を復元するために必要な処理を実行します。ObjectSE
saveState(FacesContext context)
インスタンスの状態をSerializable
オブジェクトとして取得します。void
setTransient(boolean transientValue)
このインターフェースを実装するオブジェクトが状態の保存または復元に参加する必要があるかどうかを示します。void
setValidationGroups(StringSE validationGroups)
このバリデーターによってチェックされる検証をフィルタリングするために使用される検証グループのコンマ区切りのリスト。void
validate(FacesContext context, UIComponent component, ObjectSE value)
Bean 検証制約に従って値が有効であることを確認します。
フィールドの詳細
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
- 関連事項:
- 定数フィールド値
メソッドの詳細
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 をインスペクションし、valueBaseClass と valueProperty の値を導出します。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<?>...)
を呼び出し、valueBaseClass、valueProperty、値引数、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 のクラスレベルの検証を許可します。- 次で指定:
- インターフェース
Validator
のvalidate
- パラメーター:
context
- 処理中のリクエストの FacesContextcomponent
- 正当性をチェックしている UIComponentvalue
- 検証する値- 例外:
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
でなければなりません- 次で指定:
- インターフェース
StateHolder
のsaveState
- パラメーター:
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
の場合、アクションを実行せずに戻ります。- 次で指定:
- インターフェース
StateHolder
のrestoreState
- パラメーター:
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)
の実装で変更された状態のみを返す必要があります。- 次で指定:
- インターフェース
PartialStateHolder
のmarkInitialState
initialStateMarked
public boolean initialStateMarked()
インターフェースからコピーされた説明:PartialStateHolder
デルタ状態の変更が追跡されている場合は
true
を返し、それ以外の場合はfalse
を返します。- 次で指定:
- インターフェース
PartialStateHolder
のinitialStateMarked
- 戻り値:
- 初期状態がマークされている場合は
true
、それ以外の場合はfalse
。
clearInitialState
public void clearInitialState()
インターフェースからコピーされた説明:PartialStateHolder
PartialStateHolder を非デルタ追跡状態にリセットします。
- 次で指定:
- インターフェース
PartialStateHolder
のclearInitialState
isTransient
public boolean isTransient()
インターフェースからコピーされた説明:StateHolder
true の場合、このインターフェースを実装するオブジェクトは、状態の保存または復元に参加してはなりません。
- 次で指定:
- インターフェース
StateHolder
のisTransient
- 戻り値:
- 一時的な場合は
true
、それ以外の場合はfalse
。
setTransient
public void setTransient(boolean transientValue)
インターフェースからコピーされた説明:StateHolder
このインターフェースを実装するオブジェクトが状態の保存または復元に参加する必要があるかどうかを示します。
- 次で指定:
- インターフェース
StateHolder
のsetTransient
- パラメーター:
transientValue
- このオブジェクトが 状態の保存または復元に参加しない場合はブール値true
を渡し、それ以外の場合はfalse
を渡します。