2017-03-15 5 views
0

sap.ui.model.odata.ODataModelを使用して、バックエンドへのサービス呼び出しを行い、データをUIにバインドします。 コーディングはかなり基本的です。私が理解していないことは、内部の​​がサーバーに発信するコールです。私はSAPUI5 - oDataModelを使用しているときにdata.jsによって内部的に呼び出されたOData呼び出し

var oDModel = new ODataModel(this.sapServiceURL + "/sap/opu/odata/sap/ZKMDOCUMENTS_SRV", { 
 
    json: true, 
 
    useBatch: false, 
 
    defaultCountMode: sap.ui.model.odata.CountMode.None, 
 
    skipMetadataAnnotationParsing: true 
 
});
次の操作を行うとき、私は2つのURLが毎回失敗の1を解雇されて見ることができます。以下を参照してください: enter image description here 最初に私が理解しているメタデータ呼び出しです。私は2番目の残りの呼び出しについては考えていません(常に400エラーで失敗します)。 形成される第二のURLは、第どのような

{hostURI}/SAP/OPU/ODATA/SAP/ZKMDOCUMENTS_SRV /?$スキップ= 0 & $トップ= 20

  • あります呼び掛ける?

  • はなぜURLは

  • これはすべてのヘルプは高く評価され、とにかく

不正な URLを作成しているので、この呼び出しを回避する方法はあり

を形成しています。おかげさまで

答えて

1

これは、ODataモデルのために起こることはありません。 ODataモデルは、(宣言的にまたはプロコドラルに)作成したバインディングまたは手続き的なODataModel.read呼び出しに基づいて要求を作成します。

そこにあるリクエストフォーマットに基づいて、あなたのビューやフラグメントのどこかで、モデルの "/"パスに集約がバインドされていると思います。例:

<List items="{/}"> 
    <StandardListItem /> 
</List> 

あるいは、「/」であると凝集および親/祖先コンテキストの相対的結合(例えば、アイテムを=「{}」)を有するかもしれません。例:

<Panel binding="{/}" > <!-- most likely the panel binding is done via code --> 
    <List items="{}"> 
     <StandardListItem /> 
    </List> 
<Panel> 

私は、要求があるため、それが凝集の部分(= 0とトップ= 20スキップ)をページ化を要求したという事実のため、理由は手続きODataModel.readコールのものであってもよいとは思いません。実際には、これらの2つの数値に基づいて、あなたのビューやフラグメントのどこかにgrow = "true"のリストがあるとします(このリストはリクエストを引き起こしています)。

+0

ありがとうSerban あなたは正しいです。私はテーブル上で "bindAggregation"を使用していますが、私のXMLビューでは、items = "{/}"と同様に項目のバインディング・パスを定義しました。それを指摘してくれてありがとう。コードは今完璧に動作します。 – Deepak

関連する問題