public class SystemCharValidator extends CharacterLimitationValidator<SystemChar>
SystemCharアノテーションで設定された許容文字であるかをバリデーションする。
使用するための設定
許容文字集合 "smallLetter" を次のように定義する。 許容文字集合の定義方法は、範囲指定やリテラル指定などいくつかあるので、詳細はnablarch.core.validation.validator.unicodeパッケージのjavadocを参照。
<component name="smallLetter" class="nablarch.core.validation.validator.unicode.RangedCharsetDef ">
<property name="startCodePoint" value="U+0061" />
<property name="endCodePoint" value="U+007A" />
<property name="messageId" value="MSG00002" />
</component>
本バリデータを使用するには許容文字集合とメッセージIDのデフォルト値を設定する必要がある。
次の例では上で定義した許容文字集合 "smallLetter" をデフォルトの許容文字集合に、
メッセージID "MSG90001" をデフォルトのメッセージIDに設定する。
<component class="nablarch.core.validation.validator.unicode.SystemCharValidator">
<!-- 定義した許容文字集合を設定 -->
<property name="defaultCharsetDef" ref="smallLetter"/>
<property name="messageId" value="MSG90001"/>
</component>
プロパティごとの設定
プロパティごとのバリデーションの内容を設定するにはSystemCharアノテーションで設定する。
バリデーション内容として、別途定義された許容文字集合 "passCharacter"、メッセージID "PASSWORD" を設定する場合は
SystemCharアノテーションを次のように記述する。
@PropertyName("パスワード")
@SystemChar(charsetDef = "passCharacter", messageId = "PASSWORD")
public void setConfirmPassword(String confirmPassword) {
this.confirmPassword = confirmPassword;
}
使用されるメッセージIDの優先順位
メッセージIDはSystemChar, CharsetDef, SystemCharValidatorのそれぞれで設定できるが、
使用するメッセージIDの優先順はSystemChar, CharsetDef, SystemCharValidatorの順となる。
例えば、全てにメッセージIDが指定されていた場合はSystemCharで指定されているメッセージIDが使用される。
| コンストラクタと説明 |
|---|
SystemCharValidator() |
| 修飾子とタイプ | メソッドと説明 |
|---|---|
SystemChar |
createAnnotation(java.util.Map<java.lang.String,java.lang.Object> params)
指定されたパラメータを属性値とするアノテーションオブジェクトを作成する。
|
java.lang.Class<? extends java.lang.annotation.Annotation> |
getAnnotationClass()
対応するアノテーションのクラスを取得する。
|
protected java.lang.String |
getMessageIdFromAnnotation(SystemChar annotation)
アノテーションからメッセージIDを取得する。
|
protected boolean |
isValid(SystemChar annotation,
java.lang.String value)
有効文字以外が入力されていないかをチェックする。
|
void |
setAllowSurrogatePair(boolean allowSurrogatePair)
サロゲートペアを許容するかどうかを設定する。
|
void |
setDefaultCharsetDef(CharsetDef defaultCharsetDef)
デフォルトの許容文字集合定義を設定する。
|
setMessageId, validateSingleValuevalidate, validateprotected boolean isValid(SystemChar annotation, java.lang.String value)
isValid クラス内 CharacterLimitationValidator<SystemChar>annotation - アノテーションvalue - バリデーション対象の値protected java.lang.String getMessageIdFromAnnotation(SystemChar annotation)
指定されたSystemCharがメッセージIDをを持つ場合は、
そのメッセージIDを返却する。
SystemCharがメッセージIDを持たない場合は、
CharsetDefが持つメッセージIDを返却する。
getMessageIdFromAnnotation クラス内 CharacterLimitationValidator<SystemChar>annotation - メッセージIDを取得するアノテーションpublic java.lang.Class<? extends java.lang.annotation.Annotation> getAnnotationClass()
public void setAllowSurrogatePair(boolean allowSurrogatePair)
デフォルトでは許容しない。サロゲートペアを許容すると、
文字列のchar数(String.length())と
コードポイント数(String.codePointCount(int, int))が
合致しない文字列を扱うことになり、影響が非常に広範に渡るため
デフォルトでは許容しない設定となっている。
allowSurrogatePair - サロゲートペアを許容する場合、真String.codePointCount(int, int),
String.length()public void setDefaultCharsetDef(CharsetDef defaultCharsetDef)
SystemChar.charsetDef()が設定されていない場合、
この許容文字集合定義が使用される。
defaultCharsetDef - デフォルトの許容文字集合定義public SystemChar createAnnotation(java.util.Map<java.lang.String,java.lang.Object> params)
createAnnotation クラス内 StringValidatorSupport<SystemChar>params - アノテーションの属性値を格納したMap