SAPUI5通貨データ型の検証ロジック分析

Jerryの記事で紹介されたコードによると、実行sap.ui.model.type.Currency後、number型のフィールドに非型の値を設定した後、データ型に付属するデータ検証メカニズムをトリガーしEnter a number、のます。

SAPUI5アプリケーション開発チュートリアルNo.46-メッセージマネージャーを使用して、すぐに使用できる検証情報のスローを実装する

デバッグエントリはCompositeBinding.prototype.setExternalValue関数。

if (this.oType) {
    
    
			pValues = SyncPromise.resolve().then(function() {
    
    
				var aCurrentValues;
				if (that.oType.getParseWithValues()) {
    
    
					aCurrentValues = that.getCurrentValues();
				}
				return that.oType.parseValue(oValue, that.sInternalType, aCurrentValues);

outputFormatの具体的な実装は次のとおりですNumberFormat

NumberFormatは、一連のフォーマットオプションに従って数値をフォーマットおよび解析するための静的クラスです。

データフォーマットはSAPUI5の重要な機能の1つであり、アプリケーションがユーザーロケールに従ってデータを表示できるようにします。このために、SAPUI5は、ロケール固有のスキーマを提供するサードパーティライブラリであるCommon Locale Data Repository(CLDR)を使用します。SAPUI5はこれらのパターンを使用して、さまざまな言語の規則に対応します。

データフォーマットのユースケースの1つは、金銭情報を含む数値をフォーマットおよび解析する機能です。この特定のユースケースでは、CLDRは、さまざまな通貨の小数点以下の桁数など、事前構成された通貨情報をスキーマに提供します。カスタム通貨は、新しいカスタム通貨を追加したり、既存の通貨を再構成したりして定義することもできます。

整数値に一致する正規表現はsRegExpInt、。^\s*([\+\+⁺₊➕﬩﹢+\-\-‐‒–⁻₋−➖﹣-]?[0-9,]+)\s*$

正規表現の検証に失敗しました:

したがってParserException、例外ます:

ライブラリリソースバンドルEnterNumberからEnter a number::

NumberFormatに関するその他の例:

// "NumberFormat" required from module "sap/ui/core/format/NumberFormat"
var oCurrencyFormat = NumberFormat.getCurrencyInstance({
    
    
    currencyCode: false
});

oCurrencyFormat.format(1234.567, "USD"); // returns $1,234.57
oCurrencyFormat.format(1234.567, "JPY"); // returns ¥1,235

oCurrencyFormat.parse("$1,234.57"); // returns [1234.57, "USD"]
oCurrencyFormat.parse("¥1,235"); // returns [1235, "JPY"]

通貨フォーマットには、次のフォーマットオプションを使用できます。

  • currencyCodeshowMeasureがtrueに設定されている場合にコードまたは記号を使用するかどうかを定義します。

  • trailingCurrencyCodeロケールに関係なく、金額の後に通貨コードを常に表示するかどうかを定義します。

  • currencyContextは、通貨番号をフォーマットするためのスキーマを定義します。標準(デフォルト)またはアカウンティングに設定できます。

おすすめ

転載: blog.csdn.net/i042416/article/details/123157104
おすすめ