Class SystemCharValidator

All Implemented Interfaces:
DirectCallableValidator, Validator

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が使用される。

  • Constructor Details

    • SystemCharValidator

      public SystemCharValidator()
  • Method Details

    • isValid

      protected boolean isValid(SystemChar annotation, String value)
      有効文字以外が入力されていないかをチェックする。
      Specified by:
      isValid in class CharacterLimitationValidator<SystemChar>
      Parameters:
      annotation - アノテーション
      value - バリデーション対象の値(null以外)
      Returns:
      有効文字以外が入力されていない場合true
    • getMessageIdFromAnnotation

      protected String getMessageIdFromAnnotation(SystemChar annotation)
      アノテーションからメッセージIDを取得する。

      指定されたSystemCharがメッセージIDをを持つ場合は、 そのメッセージIDを返却する。 SystemCharがメッセージIDを持たない場合は、 CharsetDefが持つメッセージIDを返却する。

      Specified by:
      getMessageIdFromAnnotation in class CharacterLimitationValidator<SystemChar>
      Parameters:
      annotation - メッセージIDを取得するアノテーション
      Returns:
      アノテーションから取得したメッセージID
    • getAnnotationClass

      public Class<? extends Annotation> getAnnotationClass()
      対応するアノテーションのクラスを取得する。
      Returns:
      対応するアノテーションのクラス
    • setAllowSurrogatePair

      public void setAllowSurrogatePair(boolean allowSurrogatePair)
      サロゲートペアを許容するかどうかを設定する。

      デフォルトでは許容しない。サロゲートペアを許容すると、 文字列のchar数(String.length())と コードポイント数(String.codePointCount(int, int))が 合致しない文字列を扱うことになり、影響が非常に広範に渡るため デフォルトでは許容しない設定となっている。

      Parameters:
      allowSurrogatePair - サロゲートペアを許容する場合、真
      See Also:
    • setDefaultCharsetDef

      public void setDefaultCharsetDef(CharsetDef defaultCharsetDef)
      デフォルトの許容文字集合定義を設定する。

      SystemChar.charsetDef()が設定されていない場合、 この許容文字集合定義が使用される。

      Parameters:
      defaultCharsetDef - デフォルトの許容文字集合定義
    • createAnnotation

      public SystemChar createAnnotation(Map<String,Object> params)
      指定されたパラメータを属性値とするアノテーションオブジェクトを作成する。
      Specified by:
      createAnnotation in class StringValidatorSupport<SystemChar>
      Parameters:
      params - アノテーションの属性値を格納したMap
      Returns:
      アノテーション