SAP Fiori应用里日期格式的显示奥秘
下图这个Fiori应用里的日期显示,Tuesday, March 1,2016,从后台返回的值为/Date(1456803000000)/
那么前台显示的可读性较好的日期是如何转成而成的?
奥秘就在Jerry这些单步调试的代码截图里:
下图这个Opportunity的金额,在右边的明细页面里显示的是1880 USD,但为何在左边,显示的是2K这个近似值?
在Chrome开发者工具的调试器里,我们能看到从后台返回的金额确实是1880:
所以这个2k一定是前台UI5代码里进行的格式化:
答案就在上图sap.ca.ui.model.format.AmoutFormat.FormatAmoutShort这个方法里。
这里涉及到一个CLDR的概念:
CLDR - Unicode Common Locale Data Repository
The Unicode CLDR provides key building blocks for software to support the world’s languages, with the largest and most extensive standard repository of locale data available. This data is used by a wide spectrum of companies for their software internationalization and localization, adapting software to the conventions of different languages for such common software tasks.
1880转换成2k的调试:
在SAP WebIDE里随便创建一个新的Fiori应用,访问一个OData服务:
直接在WebIDE里本地运行该Fiori应用,在Chrome开发者工具里把metadata请求的url抄下来:
url如下:
直接贴到浏览器里,也能看到返回的metadata,但有趣的是,这个Fiori应用取OData服务需要经由的Destination,在WebIDE里本地运行时抓到的url里没有体现出来。
在Fiori应用的manifest.json文件里,datasources区域维护了该OData的endpoint:
"dataSources": {
"mainService": {
"uri": "/sap/opu/odata/iwbep/GWSAMPLE_BASIC/",
"type": "OData",
"settings": {
"odataVersion": "2.0",
"localUri": "localService/metadata.xml"
}
}
},
还有models区域,指明了该OData模型使用的dataSource为mainService:
但是在neo-app.json(我这个Fiori应用是在WebIDE里选择Neo环境创建的)文件里,仍然可以看到Destination的名称为ES5_Trial_Neo:
- 点赞
- 收藏
- 关注作者
评论(0)