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

How to pass $filter parameters from SAPUI5 application

我正在尝试从输入字段向后端发出请求 link。我的实体集叫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/$metadata?$filter%20=%20Applctn%20eq%20%27kjh%27

可能问题是请求采用这种格式 Screen

而且我想我需要这种格式来将过滤器传递给后端,因为这个过滤器可以在另一个应用程序中使用 Screen

您的 serviceUrl 将是:

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

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

我找到了解决方案,这里是 post 查询 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]  
        });  
    }