SAP UI5 Currency 数据类型的校验逻辑分析
按照 Jerry 这篇文章介绍的代码,运行之后,给类型为 sap.ui.model.type.Currency
的字段设置一个非 number
类型的值之后,触发该数据类型自带的数据校验机制,显示 Enter a number
的错误消息。
SAP UI5 应用开发教程之四十六 - 使用 Message Manager 实现开箱即用的验证(Validation)信息抛出
调试入口在 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 中的关键功能之一,它使应用程序能够根据用户区域设置显示数据。 为此,SAPUI5 使用通用区域设置数据存储库 (CLDR),这是一个提供特定区域设置模式的第三方库。 SAPUI5 使用这些模式来适应不同语言的约定。
数据格式化的一种用例是格式化和解析数字(包括货币信息)的能力。 对于这个特定的用例,CLDR 提供带有预配置货币信息的模式,例如一组不同货币的小数位数。 也可以通过添加新的自定义货币或重新配置现有货币来定义自定义货币。
其中匹配整形数值的正则表达式,维护在变量 sRegExpInt
内:^\s*([\+\+⁺₊➕﬩﹢+\-\-‐‒–⁻₋−➖﹣-]?[0-9,]+)\s*$
正则表达式验证失败:
因此抛出 ParserException
异常:
从 library resource bundle 里取得占位符 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"]
货币格式的以下格式选项可用:
-
currencyCode 定义当 showMeasure 设置为 true 时是否使用代码或符号。
-
trailingCurrencyCode 定义货币代码是否始终显示在金额之后,与区域设置无关。
-
currencyContext 定义了用于格式化货币编号的模式。 它可以设置为标准(默认)或会计。
相关文章
- SAP UI5 应用中 MockServer 的实例化方法
- SAP UI5 setProperty 的执行逻辑单步调式和分析
- SAP UI5和Angular里控制器(Controller)实现逻辑比较
- SAP UI5 current language语言的决定逻辑和优先级
- SAP WebClient UI界面元素ID生成的逻辑分析
- SAP OData 后台ETAG校验逻辑
- SAP Spartacus Anonymous Consent Templates 读取逻辑
- SAP Spartacus SSR 模式下 index.html 页面渲染 fallback 到 CSR 之后的执行逻辑
- SAP Spartacus navigation ui 节点的 url 字段的生成逻辑,同样来自 sampledataaddon
- SAP Spartacus B2B页面的List Component
- SAP Spartacus CmsPage的加载逻辑
- 如何下载SAP Cloud for Customer UI技术模型的XML源代码到本地
- SAP Commerce Cloud Product Review 的添加逻辑
- SAP CRM schedule line i
- SAP CRM呼叫中心搜索Max hit的配置点
- SAP UI5 Currency 数据类型的校验逻辑分析
- SAP UI5 setProperty 的执行逻辑单步调式和分析
- 使用 Babel 将基于 ES6 的 SAP UI5 的代码转译成传统 JavaScript 代码
- SAP UI5 footerbar按钮高亮实现逻辑
- 关于 SAP Gateway 响应头部 Last Modified 字段的赋值逻辑
- SAP OData Gateway里uri type为metadata的请求处理逻辑
- SAP ABAP OData gateway缓存表的存储逻辑 - cache table logic
- SAP 电商云 Spartacus UI 点了 Shipping Method 之后的执行逻辑
- SAP Spartacus 2.1.0 加载homepage的逻辑