2017-01-10 4 views
0

SAPUI5アプリで使用する予定のnetweaverゲートウェイにデータサービスを作成しました。このサービスは、バックエンドでテストするときにうまく動作します。SAPUI5アプリからOdataサービスが起動しない

私のアプリでは、このサービスをmanifest.jsonで宣言しましたが、これはどのUIコンポーネントにもバインドされていません。手動で起動する必要があるのでしょうか?これは非常に基本的に聞こえるかもしれませんが、データサービスはアプリのライフサイクルで実際に起動されるのはいつですか?

. 
. 
. 
"datasources" : { 
    "testOdataRemote" : { 
     "uri": "https://<hostname>:<port>/sap/opu/odata/SAP/<service_name>/", 
     "type": "OData", 
     "settings": { 
      "odataVersion": "2.0" 
     } 
    } 
} 
. 
. 
. 
"models": { 
    "testOdata": { 
     "datasource": "testOdataRemote" 
    } 
} 
. 
. 
. 

私は、モデルからデータを取得しようとする方法の一つではI私のコントローラ:これは動作しません

var oModel = this.getView().getModel("testOdata"); 
var aData = oModel.getProperty("/entityset_name"); 

ここ

は私のマニフェストファイルの抜粋です。私の推測では、サービスは誘発されないということです。

+0

プロパティは、大文字と小文字が区別されます。データソースをdataSourceに、データソースをdataSourceに変更してください - https://openui5.hana.ondemand.com/#docs/guide/be0cf40f61184b358b5faedaec98b2da.htmlを参照してください...モデルはコンポーネントと共に初期化されます –

+0

ありがとうございます。しかし、それはここのタイプミスです。元のマニフェストでは正しいです。 –

答えて

4

oDataModelがデータをフェッチするコントロールにバインドされていないため、手動でモデルのメソッドを呼び出す必要があります。 Read Method-Click here

OdataモデルをListにバインドすると、oDataモデルのreadメソッド(エンティティ名付き)が自動的に呼び出され、データはoDataモデルに格納されます。

あなたの場合、モデルを宣言しました。したがって、oDataサービスのメタデータのみをフェッチします。今、あなたのoDataサービスは、複数のエンティティセットを持つことができます。アプリケーションはどのエンティティがロードするかを知らない。したがって、エンティティセットを任意のコントロールにバインドすることによって、エンティティセットをフェッチします。

odata ModelのReadメソッドでは、oDataモデルにロードするエンティティセットを指定します。 readメソッドの成功ハンドラには、フェッチされたデータが格納されます(後で使用するためにoDataモデルに格納されます)。

EDIT:読み取り方法:マニフェストJSONファイル内

oDataModel.read('/Orders', //entity set to be fetched 
      { 
      success:function(oData,oResponse){ //success handler 
       console.log(oData); 
      }, 
      error: function(oError) { // error handler 
       console.log(oError); 

      } 
     }); 
+0

詳細を明確にしていただきありがとうございます。私はあまりにも思ったが、確かではなかった。 –

関連する問題