public class BeanValidator extends ObjectSE implements Validator, PartialStateHolder
Bean プロパティの検証を Bean 検証 API に委譲するバリデーター。
| 修飾子と型 | フィールドと説明 |
|---|---|
static StringSE | DISABLE_DEFAULT_BEAN_VALIDATOR_PARAM_NAME このパラメーターが定義されていて、その値の |
static StringSE | EMPTY_VALIDATION_GROUPS_PATTERN検証グループの空のリストを識別する正規表現パターン。 |
static StringSE | ENABLE_VALIDATE_WHOLE_BEAN_PARAM_NAME このパラメーターが設定されていて、その値の文字列表現で toLowerCase().equals("true" )を呼び出すと、 |
static StringSE | MESSAGE_ID 制約の失敗が見つかった場合に作成される FacesMessage のメッセージ ID。 |
static StringSE | VALIDATION_GROUPS_DELIMITER完全修飾グループ名のリストを文字列として区切るために使用される区切り文字。 |
static StringSE | VALIDATOR_FACTORY_KEYValidator インスタンスを取得するために Jakarta Server Faces によって使用されるオブジェクトを保持する Jakarta Servlet コンテキスト属性の名前。 |
static StringSE | VALIDATOR_IDJakarta Server Face 仕様で定義されている、このバリデーターの標準バリデーター ID。 |
NOT_IN_RANGE_MESSAGE_ID| コンストラクターと説明 |
|---|
BeanValidator() |
| 修飾子と型 | メソッドと説明 |
|---|---|
void | clearInitialState()PartialStateHolder を非デルタ追跡状態にリセットします。 |
StringSE | getValidationGroups()制約をチェックするときに ValidationAPI に渡された検証グループを返します。 |
boolean | initialStateMarked() デルタ状態の変更が追跡されている場合は |
boolean | isTransient()true の場合、このインターフェースを実装するオブジェクトは、状態の保存または復元に参加してはなりません。 |
void | 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 検証制約に従って値が有効であることを確認します。 |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSEpublic static final StringSE VALIDATOR_ID
Jakarta Server Face 仕様で定義されている、このバリデーターの標準バリデーター ID。
public static final StringSE MESSAGE_ID
制約の失敗が見つかった場合に作成される FacesMessage のメッセージ ID。このメッセージのメッセージ形式の文字列には、オプションで次のプレースホルダーを含めることができます。
{0} は、Bean 検証からの補間メッセージに置き換えられました。{1} は、値がこのメッセージを生成した入力コンポーネントのラベルである String に置き換えられました。デフォルトの実装で提供されるメッセージ形式の文字列は、プレースホルダー {0} である必要があります。これにより、メッセージ処理が Bean 検証に完全に委譲されます。開発者は、このメッセージ形式の文字列をオーバーライドして、他の Jakarta Server Face バリデーターメッセージに準拠させることができます。(つまり、コンポーネントラベルを含めること)
public static final StringSE VALIDATOR_FACTORY_KEY
Validator インスタンスを取得するために Jakarta Server Faces によって使用されるオブジェクトを保持する Jakarta Servlet コンテキスト属性の名前。Jakarta Servlet コンテキスト属性が欠落しているか、NULL 値が含まれている場合、Jakarta Server Faces はこの Jakarta Servlet コンテキスト属性を自由に使用して、このバリデーターによってブートストラップされた ValidatorFactory を保管できます。
public static final StringSE VALIDATION_GROUPS_DELIMITER
完全修飾グループ名のリストを文字列として区切るために使用される区切り文字。
public static final StringSE EMPTY_VALIDATION_GROUPS_PATTERN
検証グループの空のリストを識別する正規表現パターン。
public static final StringSE DISABLE_DEFAULT_BEAN_VALIDATOR_PARAM_NAME
このパラメーターが定義されていて、その値の String 表現で toLowerCase().equals(“true”) を呼び出すと true が返される場合、ランタイムは、シンボリック定数 VALIDATOR_ID の値に等しい validator-id を持つバリデーターをデフォルトのバリデーターのリストに自動的に追加してはなりません。このパラメーターを true に設定すると、アプリケーションのすべてのビューのすべての入力コンポーネントへの Bean 検証の自動インストールが無効になりますが、手動インストールは引き続き可能です。
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 /> に関連する追加のアクションが実行されます。
public void setValidationGroups(StringSE validationGroups)
この検証によってチェックされる検証をフィルタリングするために使用される検証グループのコンマ区切りリスト。validationGroupsArray 属性が省略されているか空の場合、検証グループは ブランチデフォルトから継承されます。ブランチデフォルトがない場合は、Default グループが使用されます。
validationGroups - 検証グループのコンマ区切りリスト (スペースとコンマのみが null として扱われる文字列)public StringSE getValidationGroups()
制約をチェックするときに検証 API に渡される検証グループを返します。validationGroupsArray 属性が省略されているか空の場合、検証グループは ブランチデフォルトから継承されます。ブランチデフォルトがない場合は、Default グループが使用されます。
validatinGroups 属性の値。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.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 - 検証が失敗した場合 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 コンテキスト。public void restoreState(FacesContext context, ObjectSE state)
StateHolderstate オブジェクトのエントリから状態を復元するために必要な処理を実行します。
このインターフェースを実装するクラスが、StateHolder も実装するインスタンスへの参照を持っている場合(イベントハンドラー、バリデーターなどを備えた UIComponent など)、このメソッドはそれらすべてのインスタンスで StateHolder.restoreState(jakarta.faces.context.FacesContext, java.lang.Object) メソッドも呼び出す必要があります。
state 引数が null の場合、アクションを実行せずに戻ります。
StateHolder 内の restoreState context - Faces コンテキスト。state - 状態。public void markInitialState()
PartialStateHolder ランタイムは、コンポーネントが初期状態であることを示すために、適切な時間にビュー内のこのインターフェースの各インスタンスで PartialStateHolder.markInitialState() メソッドが呼び出されることを確認する必要があります。インターフェースの実装者は、markInitialState() が呼び出されてから PartialStateHolder.clearInitialState() が呼び出されるまで PartialStateHolder.initialStateMarked() が true を返すことを確認する必要があります。その後、initialStateMarked() は false を返す必要があります。また、インスタンスが initialStateMarked() から true を返す間、実装は StateHolder.saveState(jakarta.faces.context.FacesContext) の実装で変更された状態のみを返す必要があります。
PartialStateHolder 内の markInitialState public boolean initialStateMarked()
PartialStateHolder デルタ状態の変更が追跡されている場合は true を返し、それ以外の場合は false を返します。
PartialStateHolder 内の initialStateMarked true、それ以外の場合は false。public void clearInitialState()
PartialStateHolderPartialStateHolder を非デルタ追跡状態にリセットします。
PartialStateHolder 内の clearInitialState public boolean isTransient()
StateHoldertrue の場合、このインターフェースを実装するオブジェクトは、状態の保存または復元に参加してはなりません。
StateHolder 内の isTransient true、それ以外の場合は false。public void setTransient(boolean transientValue)
StateHolderこのインターフェースを実装するオブジェクトが状態の保存または復元に参加する必要があるかどうかを示します。
StateHolder 内の setTransient transientValue - このオブジェクトが 状態の保存または復元に参加しない場合はブール値 true を渡し、それ以外の場合は false を渡します。Copyright © 2018,2020 Eclipse Foundation.
Use is subject to license terms.