SAP UI5 Library Resource Bundle 的设计原理
按照 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 的设计原理相关推荐
- 深入学习SAP UI5框架代码系列之六:SAP UI5控件数据绑定的实现原理
这是Jerry 2021年的第 7 篇文章,也是汪子熙公众号总共第 278 篇原创文章. 系列目录 (0) SAP UI5应用开发人员了解UI5框架代码的意义 (1) SAP UI5 module懒加 ...
- SAP Spartacus 重用组件cx-table的设计原理
cx-table在SAP Spartacus尤其是B2B feature里有着广泛的用途: 它是一个shared Component,布局实现文件:table-component.html: 其中表格 ...
- SAP Spartacus 的延迟加载 Lazy load 设计原理
官方链接 延迟加载,也称为代码拆分,可让您将 JavaScript 代码分成多个块. 结果是当用户访问第一页时,您不必加载完整应用程序的所有 JavaScript. 相反,只加载给定页面所需的块. 在 ...
- SAP UI5应用的footer区域绘制原理和入口
Created by Wang, Jerry on Sep 24, 2015 Ui5 control object – 通过上图line 307行生成.每个control object在core的th ...
- SAP Spartacus里的HTTPErrorInterceptor的设计原理
HTTPErrorInterceptor有一个protected的成员,handlers,类型为HttpErrorHandler: HttpErrorHandler是一个abstract class: ...
- SAP CRM WebClient UI data loss设计原理
Sent: Thursday, July 5, 2012 12:19 PM Subject: [Knowledge share]A follow up for data loss discussion ...
- SAP UI5 json model load data的原理
Created by Wang, Jerry, last modified on Oct 19, 2015 要获取更多Jerry的原创文章,请关注公众号"汪子熙":
- SAP UI5和Angular的函数防抖(Debounce)和函数节流(Throttle)实现原理介绍
这是Jerry 2021年的第 11 篇文章,也是汪子熙公众号总共第 282 篇原创文章. Jerry之前的文章 SAP UI5 OData谣言粉碎机:极短时间内发送两个Odata request, ...
- 深入学习SAP UI5框架代码系列之七:控件数据绑定的三种模式 - One Way, Two Way和OneTime实现原理比较
这是Jerry 2021年的第 8 篇文章,也是汪子熙公众号总共第 279 篇原创文章. 系列目录 (0) SAP UI5应用开发人员了解UI5框架代码的意义 (1) SAP UI5 module懒加 ...
最新文章
- JVM系列(之ClassLoader)
- 浅析「扣减库存」的方案设计
- 使用winform来递归实现资源管理器
- 宏碁笔记本linux,Acer宏碁(Acer宏碁)Acer 4752G-2332G50Mnkk Linux笔记本电脑整体评测-ZOL中关村在线...
- Springmvc_3(SessionAttributes 将数据放入到session中)
- H5自定义属性详细介绍
- 数据驱动型文化是大数据成功的关键
- js存取cookie以及设置cookie储存时间
- 条形码技术应用属于计算机系统的,条形码技术在现代物流系统中的应用
- 小说阅读,原生小说APP源码出售,可二次开发 四端互通:android端,ios端,h5端,公众号端
- 多轮对话之对话管理(Dialog Management)
- 方向传感器新的替代方法详解
- 解决 `Failed to connect to github.com port 443: Connection refused`
- android下怎样伪装mac,Android刷成iOS?史上最强苹果伪装教程
- 由浅入深玩转华为WLAN—11 安全认证配置(4)AC内置Portal认证(网页认证)
- 发现一个国外用来做参与式及知识迁移的网络课件 messenger-education
- 【力扣Hot100】155. 最小栈
- oracle 数据字典画报,Oracle 数据字典查询
- 笔记本外接显示器如何调亮度
- XSS注入基础入门篇