在SAPUi5中自动将$ count技术化为请求URL

2020-09-24 08:07发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家您好,

请帮帮我。

我正在学习使用SAPUI5开发UI并尝试从后端查询Odata服务而没有任何明确的GET请求,例如oModel.read(...)。 我已经在Component.js中设置了模型,并在各种xml视图中使用了数据绑定。 因此,SAPUI5在运行时会生成请求,但会将$ count参数添加到每个请求URL。 最终,这将导致400-错误的请求响应(尽管在大多数情况下会返回正确的数据)。 我想知道这是否是正常的SAPUI5行为,或者它是否与我的代码有关以及如何解决该问题。

//Component.js中的模型


 var url =" http://<主机>//myService.xsodata/";

 var oModel = new sap.ui.model.odata.ODataModel(url,true," user"," pswd");

 oView.setModel(oModel);

//XmlViews中的一些绑定
 

 

//生成的GET-Request URL:
 http://<主机>//myService.xsodata/LOCATIONS?$expand=Rooms/$count

 http://<主机>//myService.xsodata/ROOMS?$expand=State,D_AGG/$count

//回应

 <?xml version =" 1.0" encoding =" utf-8" standalone =" yes"?> <错误xmlns =" http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"> <代码/>  $ expand系统查询选项中位置'12'的语法错误:entryNavProperty'$ count'对于类型'myService.ROOMSType'不是有效的导航属性。  

我会感激任何指针

预先感谢

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家您好,

请帮帮我。

我正在学习使用SAPUI5开发UI并尝试从后端查询Odata服务而没有任何明确的GET请求,例如oModel.read(...)。 我已经在Component.js中设置了模型,并在各种xml视图中使用了数据绑定。 因此,SAPUI5在运行时会生成请求,但会将$ count参数添加到每个请求URL。 最终,这将导致400-错误的请求响应(尽管在大多数情况下会返回正确的数据)。 我想知道这是否是正常的SAPUI5行为,或者它是否与我的代码有关以及如何解决该问题。

//Component.js中的模型


 var url =" http://<主机>//myService.xsodata/";

 var oModel = new sap.ui.model.odata.ODataModel(url,true," user"," pswd");

 oView.setModel(oModel);

//XmlViews中的一些绑定
 

 

//生成的GET-Request URL:
 http://<主机>//myService.xsodata/LOCATIONS?$expand=Rooms/$count

 http://<主机>//myService.xsodata/ROOMS?$expand=State,D_AGG/$count

//回应

 <?xml version =" 1.0" encoding =" utf-8" standalone =" yes"?> <错误xmlns =" http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"> <代码/>  $ expand系统查询选项中位置'12'的语法错误:entryNavProperty'$ count'对于类型'myService.ROOMSType'不是有效的导航属性。  

我会感激任何指针

预先感谢

付费偷看设置
发送
4条回答
一只江湖小虾
1楼 · 2020-09-24 08:40.采纳回答

默认情况下,使用manifest.json创建OData模型时,每个请求都带有$ count。

要删除定义了模型的$ count编辑manifest.json文件(位于sap.ui5-> models下)。

假设您的模型名称为" myService",请检查以下代码是否包含manifest.json

" sap.ui5":{
      "楷模": {
          " myService":{
               " dataSource":<我的服务数据源URL>,
               " type":" sap.ui.model.odata.v2.ODataModel",
               "设置":{
                    " defaultCountMode":" None"//这将在所有请求上禁用$ count
               }
           }
      }
 } 
SAP浪
2楼-- · 2020-09-24 08:35

manifest.json:

"数据源":{

" mainService":{

" uri":" http ://services.odata.org/V2/Northwind/Northwind.svc/Products?$ format = json ",

"类型":" JSON"

}

如何读取JSON类型(JSONModel)

ODataModel中的示例:

this.getModel()。read("/img/d/results/$ count",{

成功:函数(oData){

oViewModel.setProperty("/img/countAll",oData);

}

});

wang628962
3楼-- · 2020-09-24 08:45

由于您使用的是列表,因此框架会自动附加$ count以限制编号。 实体检索的记录数。

尝试通过在网关中附加计数来测试oData URI-服务测试并确认是否正在获取数据,即在网关中的URI上附加$ count = 200并确认响应。 如果它在后端网关中工作,那么您可以从前端查看它。

此致

Sharath

CJones
4楼-- · 2020-09-24 08:33

网关服务构建器可以选择测试oData服务。

为避免框架附加$ count,请不要在XML中使用实体映射。 尝试将实体手动绑定到控制器中的视图控件。 这样,您可以避免将$ count过滤器附加到URI。

此致

Sharath

一周热门 更多>