按照 Jerry 这篇文章介绍的代码,运行之后,给类型为 sap.ui.model.type.Currency 的字段设置一个非 number 类型的值之后,触发该数据类型自带的数据校验机制,显示 Enter a number 的错误消息。

SAP UI5 应用开发教程之四十六 - 使用 Message Manager 实现开箱即用的验证(Validation)信息抛出

本文介绍这个 Enter a number 文本的数据来源。

入口处:sap.ui.define 导致 ResourceBundle 的加载:

资源包是 *.properties 文件的集合。所有文件都使用相同的基本名称(标识资源包的前缀)、标识每个文件中包含的语言的可选后缀以及固定的 .properties 扩展名来命名。语言后缀是根据旧的 JDK 语言环境语法形成的。按照惯例,应该存在没有语言后缀的文件,并包含开发人员语言的原始未翻译文本。如果找不到更合适的语言,则使用此文件。

当需要本地化文本时,应用程序使用 SAPUI5 API 加载与当前语言最匹配的属性文件。这同样适用于可以表示为字符串的任何其他本地化数据,例如日期格式化字符串。要从属性文件中检索文本,应用程序使用(与语言无关的)键。如果找不到此键的文本,则加载下一个最佳匹配文件并检查文本。最后,如果没有文件匹配,则加载并检查原始文件。

执行 sap/m/ListItemBase.js module 的加载:

ListItemBase.js 里需要读取 edit icon 的 url,因此触发 ResourceBundle 的加载:

ListItemBase.prototype.DetailIconURI = IconPool.getIconURI("edit");

进而触发 CoreResourceBundle 的加载:

if (typeof info === 'number') {mRegistry[collectionName][iconName] = undefined; // avoid duplicate icon warninginfo = _IconRegistry.addIcon(iconName, collectionName, {fontFamily: mFontRegistry[collectionName].config.fontFamily,content: info & 0xFFFF,suppressMirroring: !!(info & 0x10000),resourceBundle: getCoreResourceBundle()});}

加载代码:

// Lazy load core resource bundlefunction getCoreResourceBundle() {if (!oCoreResourceBundle) {oCoreResourceBundle = sap.ui.getCore().getLibraryResourceBundle("sap.ui.core");}return oCoreResourceBundle;}

最后得到 resource bundle 的完整 url:

https://sapui5.hana.ondemand.com/resources/sap/ui/core/messagebundle.properties

将上述 url 输入浏览器地址栏访问,得到完整的 resource bundle 内容:Enter a number 也在其中。

ResourceBundle.prototype.getText

SAP UI5 Library Resource Bundle 的设计原理相关推荐

  1. 深入学习SAP UI5框架代码系列之六:SAP UI5控件数据绑定的实现原理

    这是Jerry 2021年的第 7 篇文章,也是汪子熙公众号总共第 278 篇原创文章. 系列目录 (0) SAP UI5应用开发人员了解UI5框架代码的意义 (1) SAP UI5 module懒加 ...

  2. SAP Spartacus 重用组件cx-table的设计原理

    cx-table在SAP Spartacus尤其是B2B feature里有着广泛的用途: 它是一个shared Component,布局实现文件:table-component.html: 其中表格 ...

  3. SAP Spartacus 的延迟加载 Lazy load 设计原理

    官方链接 延迟加载,也称为代码拆分,可让您将 JavaScript 代码分成多个块. 结果是当用户访问第一页时,您不必加载完整应用程序的所有 JavaScript. 相反,只加载给定页面所需的块. 在 ...

  4. SAP UI5应用的footer区域绘制原理和入口

    Created by Wang, Jerry on Sep 24, 2015 Ui5 control object – 通过上图line 307行生成.每个control object在core的th ...

  5. SAP Spartacus里的HTTPErrorInterceptor的设计原理

    HTTPErrorInterceptor有一个protected的成员,handlers,类型为HttpErrorHandler: HttpErrorHandler是一个abstract class: ...

  6. SAP CRM WebClient UI data loss设计原理

    Sent: Thursday, July 5, 2012 12:19 PM Subject: [Knowledge share]A follow up for data loss discussion ...

  7. SAP UI5 json model load data的原理

    Created by Wang, Jerry, last modified on Oct 19, 2015 要获取更多Jerry的原创文章,请关注公众号"汪子熙":

  8. SAP UI5和Angular的函数防抖(Debounce)和函数节流(Throttle)实现原理介绍

    这是Jerry 2021年的第 11 篇文章,也是汪子熙公众号总共第 282 篇原创文章. Jerry之前的文章 SAP UI5 OData谣言粉碎机:极短时间内发送两个Odata request, ...

  9. 深入学习SAP UI5框架代码系列之七:控件数据绑定的三种模式 - One Way, Two Way和OneTime实现原理比较

    这是Jerry 2021年的第 8 篇文章,也是汪子熙公众号总共第 279 篇原创文章. 系列目录 (0) SAP UI5应用开发人员了解UI5框架代码的意义 (1) SAP UI5 module懒加 ...

最新文章

  1. JVM系列(之ClassLoader)
  2. 浅析「扣减库存」的方案设计
  3. 使用winform来递归实现资源管理器
  4. 宏碁笔记本linux,Acer宏碁(Acer宏碁)Acer 4752G-2332G50Mnkk Linux笔记本电脑整体评测-ZOL中关村在线...
  5. Springmvc_3(SessionAttributes 将数据放入到session中)
  6. H5自定义属性详细介绍
  7. 数据驱动型文化是大数据成功的关键
  8. js存取cookie以及设置cookie储存时间
  9. 条形码技术应用属于计算机系统的,条形码技术在现代物流系统中的应用
  10. 小说阅读,原生小说APP源码出售,可二次开发 四端互通:android端,ios端,h5端,公众号端
  11. 多轮对话之对话管理(Dialog Management)
  12. 方向传感器新的替代方法详解
  13. 解决 `Failed to connect to github.com port 443: Connection refused`
  14. android下怎样伪装mac,Android刷成iOS?史上最强苹果伪装教程
  15. 由浅入深玩转华为WLAN—11 安全认证配置(4)AC内置Portal认证(网页认证)
  16. 发现一个国外用来做参与式及知识迁移的网络课件 messenger-education
  17. 【力扣Hot100】155. 最小栈
  18. oracle 数据字典画报,Oracle 数据字典查询
  19. 笔记本外接显示器如何调亮度
  20. XSS注入基础入门篇

热门文章

  1. MaxCompute Next
  2. PHP file_get_contents 设置超时时间
  3. 开源跳板机(堡垒机)Jumpserver v0.3.0 发布
  4. Pxe+Kickstart批量网络安装操作系统
  5. 这个女人,败得很漂亮!看后有感!
  6. Android DDMS如何使用?
  7. 从赖斯想谈恋爱-------到教育的启迪
  8. EL表达式 参考手册
  9. 配置VNC并远程控制服务器(电脑)
  10. ingress controller 和ingress使用实例