如何从SAPUI5应用程序传递$ filter参数

时间:2016-08-05 10:11:28

标签: request frontend sapui5

我尝试从输入字段到后端建立请求链接。我的实体集叫做ActionsSet,实体集的属性是Applctn。我想通过Filter运算符EQ从输入字段传递参数。我无法弄清楚正确的方法。这是我的代码段。

onPress: function() {
 var oParameter = this.getView().byId("inp").getValue();
 if (oParameter == '') {
    var msg = 'Fill it!';
    MessageToast.show(msg);}
 else{
     var oModel = new sap.ui.model.odata.v2.ODataModel("<SERVERURL>/sap/opu/odata/sap/ZACTIONS_SRV/ActionsSet?$filter = Applctn eq '" + oParameter + "'");    
     }

好吧,所以我让它变得更简单。但我有这个错误400 Bad request as

/ ZACTIONS_SRV / ActionsSet / $元数据?$滤波器%20 =%20Applctn%20当量%20%27kjh%27

也许问题是请求是这种格式 Screen

我想我需要这种格式来传递过滤器以便后端,因为此过滤器适用于另一个应用Screen

2 个答案:

答案 0 :(得分:1)

我找到了解决方案,这是如何将查询发布到OData服务的正确方法:

onPress: function() {
 var oParameter = this.getView().byId("inp").getValue();
 if (oParameter == '') {
    var msg = 'Fill it!';
    MessageToast.show(msg);}
 else{
     var oModel = new sap.ui.model.odata.ODataModel("<SERVERURL>/sap/opu/odata/sap/ZACTIONS_SRV/");
     var Filter = new sap.ui.model.Filter('Applctn', 'EQ', oParameter);
     oModel.read("/ActionsSet", {  
          filters: [Filter]  
        });  
    }

答案 1 :(得分:0)

您的serviceUrl将是:

serviceUrl: "http://consap2.consit.local:8060/sap/opu/odata/sap/ZACTIONS_SRV/ActionsSet?$filter = Applctn eq '" + oParameter + "'"

oParameter应在单引号中指定,因为serviceUrl中包含" "