2017-01-10 3 views
0

Я создал службу данных в шлюзе netweaver, который я намерен использовать в приложении SAPUI5. Эта услуга отлично работает, когда я тестирую ее на бэкэнд.Служба Одаты не запускается из приложения SAPUI5

В моем приложении я объявил эту службу в manifest.json, но я не привязал ее к любому компоненту пользовательского интерфейса. Означает ли это, что мне нужно запустить его вручную? Это может звучать очень просто, но когда служба данных фактически запускается в жизненном цикле приложения?

Вот отрывок из моего файла манифеста:

. 
. 
. 
"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

свойства в вашем файле манифеста JSON чувствительны к регистру. смените источники данных на dataSources и datasource на dataSource - обратитесь к https://openui5.hana.ondemand.com/#docs/guide/be0cf40f61184b358b5faedaec98b2da.html ... модели будут инициализированы вместе с вашим компонентом –

+0

Спасибо Яну. Но это опечатка здесь. В моем оригинальном манифесте это правильно. –

ответ

4

Поскольку ваш oDataModel не привязан к какому-либо элементу управления для извлечения данных, вам необходимо вручную вызвать метод чтения модели. Read Method-Click here

Если вы привязываете свою модель Odata к, скажем, списку, она автоматически вызывает метод чтения (с именем сущности) модели oData и ваши данные хранятся в модели oData.

В вашем случае вы только что объявили модель. Таким образом, он будет получать только метаданные службы oData. Теперь ваш сервис oData может иметь несколько наборов сущностей. Приложение не будет знать, какой объект настроен для загрузки. Следовательно, привязывая объект, установленный к любому элементу управления, он будет извлекать этот набор объектов.

В методе Read odata Model вы указываете, какой объект должен быть загружен в вашу модель OData. Обработчик успеха метода чтения будет содержать ваши извлеченные данные (которые будут сохранены в модели OData для последующего использования).

EDIT: метод чтения:

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

Спасибо Рахулу за это подробное разъяснение. Я тоже так думал, но не был уверен. –

Смежные вопросы