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_KEY Validator インスタンスを取得するために Jakarta Server Faces によって使用されるオブジェクトを保持する Jakarta Servlet コンテキスト属性の名前。 |
static StringSE | VALIDATOR_ID Jakarta 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, waitSE
public 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(javax.faces.context.FacesContext, javax.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" (引用符なし)を引数として渡します。このアプリケーションが Java EE6 以降の Unified EL 実装の環境で実行されている場合は、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(javax.validation.MessageInterpolator)
を使用して ValidatorContext
に保存します。
validatorContext
から Validator
インスタンスを取得します。
javax.validation.Validator
から javax.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(javax.faces.context.FacesContext)
メソッドも呼び出す必要があります。このメソッドは、子とファセットの状態を保存してはなりませんそれは StateManager
を介して行われます
このメソッドは、実装オブジェクトの状態を変更してはなりません。つまり、このコードを実行した後:
Object state = component.saveState(facesContext);
component
は、実行前と同じでなければなりません。
このメソッドからの戻り値は Serializable
でなければなりません
StateHolder
の saveState
context
- Faces コンテキスト。public void restoreState(FacesContext context, ObjectSE state)
StateHolder
state オブジェクトのエントリから状態を復元するために必要な処理を実行します。
このインターフェースを実装するクラスが、StateHolder も実装するインスタンスへの参照を持っている場合(イベントハンドラー、バリデーターなどを備えた UIComponent
など)、このメソッドはそれらすべてのインスタンスで StateHolder.restoreState(javax.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(javax.faces.context.FacesContext)
の実装で変更された状態のみを返す必要があります。
PartialStateHolder
の markInitialState
public boolean initialStateMarked()
PartialStateHolder
デルタ状態の変更が追跡されている場合は true
を返し、それ以外の場合は false
を返します。
PartialStateHolder
の initialStateMarked
true
、それ以外の場合は false
。public void clearInitialState()
PartialStateHolder
PartialStateHolder を非デルタ追跡状態にリセットします。
PartialStateHolder
の clearInitialState
public boolean isTransient()
StateHolder
true の場合、このインターフェースを実装するオブジェクトは、状態の保存または復元に参加してはなりません。
StateHolder
の isTransient
true
、それ以外の場合は false
。public void setTransient(boolean transientValue)
StateHolder
このインターフェースを実装するオブジェクトが状態の保存または復元に参加する必要があるかどうかを示します。
StateHolder
の setTransient
transientValue
- このオブジェクトが 状態の保存または復元に参加しない場合はブール値 true
を渡し、それ以外の場合は false
を渡します。Copyright © 2019 Eclipse Foundation.
Use is subject to license terms.