当前位置: 首页 > Web前端 > HTML

关于SAPUI5ODataV4自动类型识别

时间:2023-03-28 14:36:41 HTML

除非明确指定类型,否则属性绑定会自动根据属性的元数据确定适当的类型。例如,绑定{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站点上发布的OData属性facetsInformation“MaxLength”、“Nullable”、“Precision”和“Scale”。除了OData属性方面,还考虑了以下ODataV4注释用于自动类型确定的集合类型约束:Org.OData.Validation.V1.Validation.MinimumOrg.OData.Validation.V1.Validation.MaximumOrg.OData.Validation.V1.Validation.Exclusive这些注解用于设置sap.ui.model。odata.type.Decimal对应的约束:minimum,maximum,mi??nimumExclusive,maximumExlusive。目前,以下类型支持映射到命名空间sap中对应的类型ui.model.odata.type:Edm.BooleanEdm.ByteEdm.DateEdm.DateTimeOffsetEdm.DecimalEdm.DoubleEdm.GuidEdm.Int16Edm.Int32Edm.Int64Edm.SByteEdm.SingleEdm.StringEdm。TimeOfDay所有其他类型(包括集合)都映射到通用类型sap.ui.model.odata.type.Raw并且只能按原始模型值访问,但不能将它们转换为人类可读的表示形式。默认情况下,属性绑定传递一个值,该值根据它所适用的控件属性的目标类型进行格式化,例如,请参见以下代码:上面XML视图中Icon控件的定义会报错,因为SAPUI5类型自动识别逻辑会自动判断DeliveryDate属性的类型为DateTimeOffset,但此类型不能将其值格式化为布尔值。正确的做法是将它的targetType设置为any,避免自动识别类型的逻辑。挂起的绑定不会发送数据服务请求,并且不会触发更改事件。开发人员可以使用其resume方法恢复挂起列表或上下文绑定。绑定Suspend和Resume的一个典型应用场景是:视图初始化时,暂时不会触发对视图中控件的读取请求。在某些情况下,比如SalesOrder的详情页中有一个叫做BusinessPartnerID的字段,我们可以通过Valuehelp查看SalesOrder可以分配的BusinessPartnerID列表。我们希望在初始化SalesOrder视图时,不发送BusinessPartner的OData数据请求,只有在用户使用ValueHelp时才会触发。多次修改绑定时避免中间请求假设我们要添加过滤器,并更改列表绑定的顺序。如果绑定不是pending,调用filter方法后会触发一个请求,调用sort方法后会触发第二个请求。如果它被暂停,则在恢复时只发送一个带有更新过滤器和排序标准的请求。