Class BigDecimalConvertor
- All Implemented Interfaces:
Convertor
本クラスで変換するプロパティには、必ずDigitsアノテーションを付与しておく必要がある。 本クラスでは、Digitsアノテーションの属性を下記の通り使用する。
Digitsアノテーションの属性名 | 説明 |
integer | 整数部桁数上限値。指定値に上限はない。 |
fraction | 小数部桁数上限値。指定値に上限はない。 |
comma | trueの場合、入力値が3桁区切り文字で編集されていてもよい。(区切り文字は省略可。) falseの場合、入力値が3桁区切り文字で編集されていてはいけない。 |
messageId | 変換失敗時のメッセージID。 |
バリデーション仕様
Digitsアノテーションの設定によって行われるバリデーション仕様の例を以下に示す。
桁数指定の設定とバリデーション内容:
integer=4, fraction=4の場合、「1234.1234」、「-1234.1234」、「+1234.1234」、「.1234」等は有効である。
しかし、「12345.」、「.12345」、「12345.123」、「123.12345」、「1234.」等は無効であり、バリデーションエラーとなる。
カンマ編集可否の設定とバリデーション内容:
commaSeparatedがtrueの場合、「1,234.1234」、「1234.1234」は有効である。
「12,34.1234」のようにカンマを3桁の区切り文字として使用していない場合は無効でありバリデーションエラーとなる。
commaSeparatedがfalseの場合、「1,234.1234」等は無効であり、バリデーションエラーとなる。
上記例のように、本クラスのバリデーションでは NumberConvertorSupport
が行う共通バリデーションに加えて、下記仕様のバリデーションを行う。
- 先頭が数字、プラス記号( + )、マイナス記号( - )、ピリオド( . )のいずれかで始まっていること。
- 整数部桁数が、Digitsアノテーションにて指定されたinteger値以下であること。
- Digitsアノテーションでfractionが指定されている場合、小数部の桁数がfraction値以下であること。
- DigitsアノテーションのcommaSeparatedがfalseの場合、カンマが使用されていないこと。
- DigitsアノテーションのcommaSeparatedがtrueの場合、カンマが3桁区切りに付与されている、またはカンマを設定していないこと。
- 末尾がピリオドで終わらないこと。
国際化
数値の記述は、フランス語圏等、言語によっては数値を記載する際にカンマとピリオドの解釈を置き換えて使用する言語がある。 Nablarchのカスタムタグで国際化機能を使用した場合、本クラスもカンマとピリオドの解釈を入れ替えて入力値を取り扱う。 以下に @Digits(integer=6, fraction=2, commaSeparated=true) を設定していた場合の例を示す。 1) 言語に "ja" (日本語) が設定された場合。 123,456.11 ⇒ 123456.11 として解釈する 123.456,11 ⇒ バリデーションエラーとなる 2) 言語に "fr" (フランス語) が設定された場合。 123,456.11 ⇒ バリデーションエラーとなる 123.456,11 ⇒ 123456.11 として解釈する
- See Also:
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected 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
-
BigDecimalConvertor
public BigDecimalConvertor()
-
-
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:
- フォーマットを表わすパターン
-