Class IntegerConvertor

java.lang.Object
nablarch.core.validation.convertor.NumberConvertorSupport
nablarch.core.validation.convertor.IntegerConvertor
All Implemented Interfaces:
Convertor
Direct Known Subclasses:
LongConvertor

@Published(tag="architect") public class IntegerConvertor extends NumberConvertorSupport
値をIntegerに変換するクラス。
本クラスで変換するプロパティには、必ずDigitsアノテーションを付与しておく必要がある。 本クラスでは、Digitsアノテーションの属性を下記の通り使用する。
Digitsアノテーションの属性名説明
integer整数部桁数上限値。10以上の数値を指定できない。
fraction小数部桁数上限値。0のみ指定可能。
commaSeparatedtrueの場合、入力値が3桁区切り文字で編集されていてもよい。(区切り文字は省略可。)              
falseの場合、入力値が3桁区切り文字で編集されていてはいけない。
messageId変換失敗時のメッセージID。

バリデーション仕様

Digitsアノテーションの設定によって行われるバリデーション仕様の例を以下に示す。

桁数指定の設定とバリデーション内容:
integer=4の場合、「1234」、「-1234」等は有効であるが、「12345」等は無効であり、バリデーションエラーとなる。

カンマ編集可否の設定とバリデーション内容:
commaSeparatedがtrueの場合、「1,234」、「1234,567」等は有効である。
「12,34」のようにカンマを3桁の区切り文字として使用していない場合は無効でありバリデーションエラーとなる。
commaSeparatedがfalseの場合、「1,234」等は無効であり、バリデーションエラーとなる。

上記例のように、本クラスのバリデーションでは NumberConvertorSupport が行う共通バリデーションに加えて、下記仕様のバリデーションを行う。

  • 先頭が数字、マイナス記号( - )のいずれかで始まっていること。
  • 整数部の桁数が、Digitsアノテーションにて指定されたinteger値以下であること。
  • DigitsアノテーションのcommaSeparatedがfalseの場合、カンマが使用されていないこと。
  • DigitsアノテーションのcommaSeparatedがtrueの場合、カンマが3桁区切りに付与されている、またはカンマを設定していないこと。
  • 小数部がないこと。(つまり、ピリオド( . )が末尾も含めて使用されていないこと。)

国際化

数値の記述は、フランス語圏等、言語によっては数値を記載する際にカンマとピリオドの解釈を置き換えて使用する言語がある。
Nablarchのカスタムタグで国際化機能を使用した場合、本クラスもカンマとピリオドの解釈を入れ替えて入力値を取り扱う。 以下に @Digits(integer=6, commaSeparated=true) を設定していた場合の例を示す。
1) 言語に "ja" (日本語) が設定された場合。
 123,456 ⇒ 123456 として解釈する
 123.456 ⇒ バリデーションエラーとなる
2) 言語に "fr" (フランス語) が設定された場合。
 123,456 ⇒ バリデーションエラーとなる
 123.456 ⇒ 123456 として解釈する

See Also:
  • Constructor Details

    • IntegerConvertor

      public IntegerConvertor()
  • Method Details

    • getTargetClass

      public Class<?> getTargetClass()
      変換対象のクラスを取得する。
      Returns:
      変換対象のクラス
    • convertToPropertyType

      protected Number convertToPropertyType(String numberString)
      トリムおよびフォーマットを行った文字列を、プロパティの型のオブジェクトへ変換する。
      Specified by:
      convertToPropertyType in class NumberConvertorSupport
      Parameters:
      numberString - トリムおよびフォーマットを行った文字列
      Returns:
      プロパティの型のオブジェクト(数値型)
    • createPattern

      protected Pattern createPattern(Digits digits, DecimalFormatSymbols symbols)
      Description copied from class: NumberConvertorSupport
      Digitsに対応する正規表現を作成する。
      Specified by:
      createPattern in class NumberConvertorSupport
      Parameters:
      digits - 数値フォーマット指定のアノテーション
      symbols - 小数点に使用する文字や1000の区切り文字を提供するDecimalFormatSymbols
      Returns:
      フォーマットを表わすパターン
    • checkDigit

      protected void checkDigit(Digits digit) throws IllegalArgumentException
      Digitsの内容が、コンバータで対応可能な値であることをチェックする。
      Parameters:
      digit - バリデーション対象の数値フォーマット
      Throws:
      IllegalArgumentException - 整数部または、小数部の桁数が不正な場合