如何在UI5中动态创建OData V2实体路径? [英] How to create OData V2 entity path dynamically in UI5?

查看:43
本文介绍了如何在UI5中动态创建OData V2实体路径?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想更新用OData服务填充的表。我正在使用此方法:

oModel.update("/Products(999)", data, {/*...*/});

我将选定的索引存储在一个变量(myVar1)中,并且需要将该变量传递给路径字符串。问题是Products(999)-这是使用硬编码行,但是如何用变量替换999

推荐答案

从V2 ODataModel:

通过API createKey动态创建路径
const path = myODataV2Model.createKey("/Products", {
  // Key(s) and value(s) of that entity set
  "ProductID": myVar1, // with the value 999 for example
  "AnotherKeyProperty": "...",
});
myODataV2Model.update(path/*, ...*/);

与手动连接路径字符串相比,createKey具有以下优势:

  • 它总是以与给定属性的EDM type相对应的正确格式输出键值(在内部使用ODataUtils.formatValue)。例如:如果ProductID的类型为Edm.Int64,则UI5在output string中追加字符"l",以对齐OData规范"999""999l"
  • 它确保所有键都按照URI标准编码(内部使用encodeURIComponentapi)。例如:ProductID='sp ace'ProductID='sp%20ace'
  • 无论哪个后台系统提供元数据,都会按顺序输出键值s。在给定相同的元数据定义的情况下,一个系统可能以与其他系统不同的顺序提供具有键的元数据。在这种情况下,如果只是手动连接密钥,应用程序在传输到服务于不同按键订单的系统时会出现可怕的故障,并抛出模糊的错误。

注意:

由于createKey依赖于服务元数据中的信息,因此接口需要在$metadata加载后执行。为此,可以使用promise based API metadataLoaded

myODataV2Model.metadataLoaded().then(/*createKey*/);

这篇关于如何在UI5中动态创建OData V2实体路径?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆