Class IntegerConvertor
- All Implemented Interfaces:
Convertor
- Direct Known Subclasses:
LongConvertor
Digitsアノテーションの属性名 | 説明 |
integer | 整数部桁数上限値。10以上の数値を指定できない。 |
fraction | 小数部桁数上限値。0のみ指定可能。 |
commaSeparated | trueの場合、入力値が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 Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected void
checkDigit
(Digits digit) Digitsの内容が、コンバータで対応可能な値であることをチェックする。protected Number
convertToPropertyType
(String numberString) トリムおよびフォーマットを行った文字列を、プロパティの型のオブジェクトへ変換する。protected Pattern
createPattern
(Digits digits, DecimalFormatSymbols symbols) Digitsに対応する正規表現を作成する。Class<?>
変換対象のクラスを取得する。Methods inherited from class nablarch.core.validation.convertor.NumberConvertorSupport
convert, convertToNumber, convertToString, getDecimalFormatSymbols, getDefaultDecimalFormatSymbols, isConvertible, setAllowNullValue, setInvalidDigitsFractionMessageId, setInvalidDigitsIntegerMessageId, setMultiInputMessageId, trim
-
Constructor Details
-
IntegerConvertor
public IntegerConvertor()
-
-
Method Details
-
getTargetClass
変換対象のクラスを取得する。- Returns:
- 変換対象のクラス
-
convertToPropertyType
トリムおよびフォーマットを行った文字列を、プロパティの型のオブジェクトへ変換する。- Specified by:
convertToPropertyType
in classNumberConvertorSupport
- Parameters:
numberString
- トリムおよびフォーマットを行った文字列- Returns:
- プロパティの型のオブジェクト(数値型)
-
createPattern
Description copied from class:NumberConvertorSupport
Digitsに対応する正規表現を作成する。- Specified by:
createPattern
in classNumberConvertorSupport
- Parameters:
digits
- 数値フォーマット指定のアノテーションsymbols
- 小数点に使用する文字や1000の区切り文字を提供するDecimalFormatSymbols
- Returns:
- フォーマットを表わすパターン
-
checkDigit
Digitsの内容が、コンバータで対応可能な値であることをチェックする。- Parameters:
digit
- バリデーション対象の数値フォーマット- Throws:
IllegalArgumentException
- 整数部または、小数部の桁数が不正な場合
-