关于 SAP UI5 OData V4 模型的类型自动识别
除非明确指定类型,否则属性绑定会根据属性的元数据自动确定适当的类型。 例如,绑定 {DeliveryDate}
将确定类型 sap.ui.model.odata.type.DateTimeOffset
(假设元数据为此属性指定“Edm.DateTimeOffset”),但 {path : 'DeliveryDate', type : 'sap.ui.model.odata.type.String'}
使用硬编码类型 sap.ui.model.odata.type.String 代替(并且不需要元数据)。
除非开发人员对类型进行硬编码,否则无法指定格式选项或约束。
自动类型确定将考虑元数据的约束,即在非 SAP 站点“MaxLength”、“Nullable”、“Precision”和“Scale”上发布的 OData 属性 facetsInformation.
除了 OData 属性方面,还考虑使用以下 OData V4 注释来设置自动类型确定的类型约束:
- Org.OData.Validation.V1.Validation.Minimum
- Org.OData.Validation.V1.Validation.Maximum
- Org.OData.Validation.V1.Validation.Exclusive
这些注释用来设置 sap.ui.model.odata.type.Decimal
的对应约束:minimum, maximum, minimumExclusive 和 maximumExlusive.
目前,下列类型支持映射到命名空间 sap 中的相应类型 ui.model.odata.type
:
- Edm.Boolean
- Edm.Byte
- Edm.Date
- Edm.DateTimeOffset
- Edm.Decimal
- Edm.Double
- Edm.Guid
- Edm.Int16
- Edm.Int32
- Edm.Int64
- Edm.SByte
- Edm.Single
- Edm.String
- Edm.TimeOfDay
所有其他类型(包括集合)都映射到泛型类型 sap.ui.model.odata.type.Raw
并只能用于 as is
访问原始模型值,但不能将其转换为用户可读的表示格式。
默认情况下,属性绑定会传递一个根据其应用的控件属性的目标类型格式化的值,例如,看下面这段代码:
<Icon src="sap-icon://message-warning" visible="{path : 'DeliveryDate', formatter : '.isOverdue'}">
上述的 XML 视图里 Icon
控件的定义会导致错误,因为 SAP UI5 类型自动识别逻辑会为 DeliveryDate
属性自动判定类型为 DateTimeOffset
, 但是该类型无法将其值格式化为布尔值。
正确的做法是,将其 targetType
设置为 any,以避免类型自动识别逻辑。
<Icon src="sap-icon://message-warning" visible="{path : 'DeliveryDate', targetType : 'any', formatter : '.isOverdue'}">
挂起的绑定不会发送数据服务请求,也不会触发更改事件。 开发人员可以使用其 resume 方法恢复挂起的列表或上下文绑定。
绑定 Suspend 和 Resume的典型应用场景是:
- 在视图初始化时,暂时
不
触发对视图中控件的读取请求。
在某些情况下,比如 SalesOrder 的明细页面里有一个字段叫做 Business Partner ID,我们可以使用 Value help 来查看该 SalesOrder 能够分配的 Business Partner ID 列表。
我们希望 SalesOrder 视图初始化时,并不发送 Business Partner 的 OData 数据请求,当且仅当用户使用 Value Help 时再触发。
- 多次修改绑定时避免中间请求
假设我们想要添加过滤器,并更改列表绑定的排序。如果绑定没有挂起,调用 filter
方法后会触发一次请求,调用 sort
方法后会触发第二次请求。
如果它被挂起,则在恢复时仅发送一个具有更新过滤器和排序标准的请求。
相关文章
- [SAA + SAP] 10. Serverless Architecture - Part1
- 88. SAP UI5 Mock 服务器如何实现自定义 Function Import
- 58. 使用工厂方法在运行时动态创建不同类型的 SAP UI5 列表行项目控件
- 34. SAP UI5 应用基于设备类型的页面适配功能(Device Adaptation)
- SAP UI5 sap.m.Table Manual Pop-In Mode 概述
- SAP UI5 应用读取 CSRF token 的 HTTP head 请求逻辑解析
- SAP Fiori Elements List Report 里的表格类型(tableType)是如何决定出来的
- SAP UI5应用里类型为Edm.DateTime的日期控件设计原理
- this.byId(SupplierForm).bindElement in SAP UI5
- SAP Marketing Cloud 功能概述(三)
- 使用SAP CRM Application Enhancement Tool创建表格类型的扩展字段
- SAP CRM产品主数据页面的缩略图显示设计原理
- SAP ERP里如何创建一个新的material类型
- 根据关键字搜索指定的SAP CRM中间件BDOC
- SAP ABAP ST05 trace和SAP HANA studio planViz的性能差异
- SAP Spartacus路由参数的默认配置
- SAP 电商云 Spartacus UI 设置 delivery mode 在 3G 慢速网络下的排队效果
- 关于 SAP Spartacus 注入服务 UserAccountService 和 facade 的问题
- 如何查看 SAP Spartacus PageLayoutComponent 里的 template$ 的值
- SAP Spartacus B2B 页面popover对话框的渲染逻辑
- SAP Spartacus 和Jerry Sandbox应用Store引用的source字段类型差异
- SAP Spartacus 标准类型的字段扩展 - type augmentation
- SAP Spartacus 里的三种table类型
- 如何使用SAP CRM增强工具AET创建Table表格类型的增强
- SAP Commerce Cloud 构建环境类型介绍
- SAP Commerce Extension的Web应用启动问题
- SAP CRM Reference类型下拉菜单里的值是从哪里取出的
- SAP CRM one order模型BOR类型支持的对象列表
- when is valid from and valid to filled in SAP IBASE buffer table
- SAP Netweaver的负载均衡消息服务器 vs CloudFoundry的App Router
- 如何自动完成登录 SAP BTP workflow(工作流) 管理应用 Launchpad 所需的设置
- SAP Data Intelligence Modeler的一些使用截图
- 再论SAP云平台上CloudFoundry编程环境的connectivity
- SAP UI5 Mock server,为什么运行时无法返回 JSON 类型的测试数据?
- SAP Fiori Elements原理介绍之类型为Currency的Smart Field工作原理
- SAP Commerce Cloud 构建环境类型介绍