Приложению не удается извлечь ресурсы JSON из папки моего проекта

#sapui5

#sapui5

Вопрос:

Я хочу отобразить простую таблицу, используя представления XML. У меня есть модель, которая загружает данные из файла JSON. Я использую классы ‘sap.ui.table’ и ‘sap.m’. Проблема в том, что я не могу извлечь данные из представления. Я думаю, что мне чего-то не хватает при привязке или загрузке библиотек или, возможно, в коде начальной загрузки.

Примечание: Найдите привязку в представлении:

Ниже приведены фрагменты кода :

1) Data.json

 {
"empstr":

           {
		"eId": 100,
		"eName": "Prathamesh",
		"eSalary": 2400,
		"currency": "INR"
	},


	"empTab": [{
			"eId": 100,
			"eName": "Prathamesh",
			"eSalary": 2400,
			"currency": "INR"


		}, {
			"eId": 200,
			"eName": "Prateek",
			"eSalary": 2500,
			"currency": "USD"
		}, {
			"eId": 300,
			"eName": "Simar",
			"eSalary": 1200,
			"currency": "INR"
		}, {
			"eId": 400,
			"eName": "Sahil",
			"eSalary": 1350,
			"currency": "EUR"
		}, {
			"eId": 500,
			"eName": "Sakshi",
			"eSalary": 500,
			"currency": "USD"
		}, {
			"eId": 600,
			"eName": "Soumya",
			"eSalary": 12000,
			"currency": "INR"
		}, {
			"eId": 700,
			"eName": "Laxman",
			"eSalary": 240000,
			"currency": "INR"
		}


	]


}  

2) Main.view.xml

 <mvc:View xmlns:core="sap.ui.core" 
		  xmlns:mvc="sap.ui.core.mvc" 
		  xmlns="sap.m" 
		  xmlns:table="sap.ui.table"
		  controllerName="akhil.controller.Main"
	      xmlns:html="http://www.w3.org/1999/xhtml">
	
	 <table:Table id="myTab1"
	              selectionMode= "None" 
	              rows="{/empTab}">
      <table:title>
      	<Text text="Table header"></Text>
      </table:title>
            <table:columns>
            	
              <table:Column>
                <table:label>
                	<Label text = "Emp Id"></Label>	
                </table:label> 
                <table:template>
                	<Text text="{eId}"></Text>
                </table:template>
              </table:Column>
              
              
              <table:Column>
                <table:label>
                	<Label text = "Emp Name"></Label>	
                </table:label> 
                <table:template>
                	<Text text="{eName}"></Text>
                </table:template>
              </table:Column>
              
              
              <table:Column>
                <table:label>
                	<Label text = "Emp Salary"></Label>	
                </table:label> 
                <table:template>
                	<Text text="{eSalary}"></Text>
                </table:template>
              </table:Column>
              
              
              <table:Column>
                <table:label>
                	<Label text = "Currency"></Label>	
                </table:label> 
                <table:template>
                	<Text text="{/empTab/currency}"></Text>
                </table:template>
              </table:Column>
            </table:columns>   
          </table:Table>

</mvc:View>  

3) Main.controller.js

 sap.ui.define([
	"sap/ui/core/mvc/Controller"
], function (Controller) {
	"use strict";


	return Controller.extend("akhil.controller.Main", {

		onInit: function () {
			
			var oModel = new sap.ui.model.json.JSONModel();
			oModel.loadData("/ExerciseBinding/Data.json");
			this.getView().setModel(oModel);
			
		}

	});


});  

4) myhtml.html

 <!DOCTYPE html>
<html>
	<head>
		<script id="sap-ui-bootstrap"		
		       	src="https://sapui5.hana.ondemand.com/resources/sap-ui-core.js"
				data-sap-ui-libs="sap.m, sap.ui.table"
				data-sap-ui-theme="sap_bluecrystal"
				data-sap-ui-bindingsyntax="complex"
				data-sap-ui-resourceroots='{
					"akhil": "./"
					}'
					>
					
		</script>	
	
		<script>
			var oView = new sap.ui.view({
				id:"idMain3",
				viewName:"akhil.view.Main",
				type: "XML"
			});

			oView.placeAt("XMLcontent"); 
		</script>
</head>
	
	<body class="sapUiBody">          
		<div id="XMLcontent"> 
		</div>
		</body>
</html>  

5) Ошибка, показанная на изображении ниже.

Ошибка

Я что-то упускаю, но не могу понять, что именно. Я ценю ваш отзыв. Данные не заполняются в представлении.

Комментарии:

1. 404, путь к вашему json, должно быть, неверный. Где ваш файл JSON? Это внутри проекта? Если нет, вам нужно создать назначение с помощью SCP для его извлечения

Ответ №1:

Ваше приложение не может найти файл данных вашей модели — откуда 404. Приведенная ниже строка кода приведет к тому, что ваше приложение ui5 будет искать в корневом каталоге веб-сервера, с которого вы обслуживаетесь:

 oModel.loadData("/ExerciseBinding/Data.json");
  

Например. вышеупомянутое выглядело бы, скажем, http://<yourserverbaseurl>/ExerciseBinding/Data.json
Вряд ли это то место, где вы разместили приложение и сам файл json.

Проверьте вкладку сеть в Chrome Developer Tools, чтобы увидеть, где на самом деле выглядит ваше приложение по сравнению с где они на самом деле находятся на вашем веб-сервере.

Ответ №2:

Всякий раз, когда создается относительный путь для ссылки на ресурс, используйте API sap.ui.require.toUrl :

 // Given data-sap-ui-resourceroots='{ akhil: "./" }'
const realPath = sap.ui.require.toUrl("akhil/ExerciseBinding/Data.json"); // "./ExerciseBinding/Data.json"
oMyJSONModel.loadData(realPath);
  

Проверьте описание API для получения дополнительной информации.