2017-02-24 9 views
0

場合によっては、SAPI5の特定のアプリケーションでodata要求がクラッシュしました(iwfnd/error_logのGW側でエラーは発生しません)。 「クロムネットワーク」タブで通話を再生すると、常に機能します。ODATA要求が中止されました

私はこのエラーを取得:次の問題が発生しました:中止されまし要求 -

使用SAPUI5のバージョンがある: "1.38.9"。 は、ここにスタックです:

O @ sap-ui-core.js:formatted:9550 
Q.fatal @ sap-ui-core.js:formatted:9571 
h._handleError @ ODataModel.js:6 
k @ ODataModel.js:6 
(anonymous) @ ODataModel.js:6 
i.abort @ datajs.js:17 
abort @ ODataModel.js:6 
c.abortPendingRequest @ ODataListBinding.js:6 
c.filter @ ODataListBinding.js:6 

それは私が私が詳細にいくつかのデータをフィルタリングする「マスター」リストの項目をクリックして「マスターディテール」シナリオの場合です。問題は、Odata要求が中止されるとデータが実際には更新されないことです。

_onRouteMatched: function(oEvent) { 
filterCharac.push(new sap.ui.model.Filter("Zrwk", sap.ui.model.FilterOperator.EQ, oArgs.idRework)); 
     filterCharac.push(new sap.ui.model.Filter("Ztasknb", sap.ui.model.FilterOperator.EQ, oArgs.taskId)); 
     this.getView().byId("TableCharac").getBinding("items").filter(filterCharac); 
     this.getView().byId("StatusLog").getBinding("items").filter(new sap.ui.model.Filter("Zrwk", sap.ui.model.FilterOperator.EQ, oArgs.idRework)); 
     this.getView().byId("lowestItems").getBinding("items").filter(filterCharac); 
     var commentsFeed = this.getView().byId("Comments"); 
     var oFilter = new sap.ui.model.Filter("Zrwk", sap.ui.model.FilterOperator.EQ, oArgs.idRework); // name between A and G 
     commentsFeed.getBinding("items").filter(oFilter); 

} 
+0

フィルタメソッドが呼び出された関数を共有できますか?フィルタはXMLviewでハードコードされていますか?フィルタメソッドを呼び出した直後に何をしていますか?一般的に、より多くのコードが役に立つでしょう。 – boghyon

答えて

1

これは主にフィルタリングは(または並べ替え)する前にリストに適用されているため、一部のデータ(例えば完全なリストの内容)を取得するための要求が中止されたときに起こります。 は、ここでは、コードの短いバージョンです要求が完了しました。 UI5は、最初に要求されたデータが「役に立たない」ことを検出するため、要求を中止します。

UI5コードから以下のコメントが(code is on github)これを説明する:

/*  
* Aborts the current pending request (if any). 
* 
* This can be called if we are sure that the data from the 
* current request is no longer relevant, e.g. when filtering/
* sorting is triggered or the context is changed. 
*/ 

理論的には、これはあなたのアプリケーションの動作に影響を与えるべきではない(しかし、私はコンソールにエラーが表示する醜いだと思います) 。これを回避するには、集計の前にフィルタリングを適用します(たとえば、コントローラ内ではなくビュー内で直接行います)。

フィルタリングするアグリゲーション(おそらくJSから)とそのビューでの定義方法をわれわれに示すことができれば、より具体的な解決法を考え出すことができます。

関連する問題