public class SystemCharValidator extends CharacterLimitationValidator<SystemChar>
SystemChar
アノテーションで設定された許容文字であるかをバリデーションする。
使用するための設定
許容文字集合 "smallLetter" を次のように定義する。 許容文字集合の定義方法は、範囲指定やリテラル指定などいくつかあるので、詳細はnablarch.core.validation.validator.unicode
パッケージのjavadocを参照。
本バリデータを使用するには許容文字集合とメッセージIDのデフォルト値を設定する必要がある。 次の例では上で定義した許容文字集合 "smallLetter" をデフォルトの許容文字集合に、 メッセージID "MSG90001" をデフォルトのメッセージIDに設定する。<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>
<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が使用される。
Constructor and Description |
---|
SystemCharValidator() |
Modifier and Type | Method and Description |
---|---|
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, validateSingleValue
validate, validate
protected boolean isValid(SystemChar annotation, java.lang.String value)
isValid
in class CharacterLimitationValidator<SystemChar>
annotation
- アノテーションvalue
- バリデーション対象の値(null以外)protected java.lang.String getMessageIdFromAnnotation(SystemChar annotation)
指定されたSystemChar
がメッセージIDをを持つ場合は、
そのメッセージIDを返却する。
SystemChar
がメッセージIDを持たない場合は、
CharsetDef
が持つメッセージIDを返却する。
getMessageIdFromAnnotation
in class 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
in class StringValidatorSupport<SystemChar>
params
- アノテーションの属性値を格納したMap