2016-05-06 9 views
0

Я пытаюсь создать очень простое приложение Spring Boot 1.3.3 с Thymeleaf и встроенным Tomcat с использованием OpenUI5 в качестве клиентской библиотеки javascript UI ... , но я не могу заставить OpenUI5 загружать данные -sap-щ-resourceroots. Возможно ли это?OpenUI5 с Spring Boot Web - могут ли они работать вместе?

Я начал с создания start.spring.io и создания проекта maven с зависимостями Web и Thymeleaf, а затем добавлен в базовую структуру OpenUI5 с представлением XML. Я последовал за следующие учебные пособия:

  1. Serving Web Content with Spring MVC
  2. OpenUI5 Walkthrough - Step 4: XML Views

я в конечном итоге со следующей структурой проекта:

root 
├── src 
│ ├── main 
│ │ ├── java 
│ │ │ └── myPackage 
│ │ │  ├── controllers 
│ │ │  │ └── LandingPageController.java 
│ │ │  └── Application.java 
│ │ └── resources 
│ │  ├── application.properties 
│ │  ├── static 
│ │  │ └── webapp 
│ │  │  └── view 
│ │  │   └── App.view.xml 
│ │  └── templates 
│ │   └── landingPage.html 
│ └── test 
│  └── java 
│   └── myPackage 
│    └── ApplicationTests.java 
│ 
└── pom.xml 

Несмотря на то, что это все в основном стандарт из этих учебных пособий, для полнота, я включу свой исходный код:

Application.java:

package myPackage; 

import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 

@SpringBootApplication 
public class Application { 

    public static void main(String[] args) { 
     SpringApplication.run(Application.class, args); 
    } 
} 

LandingPageController.java:

package myPackage.controllers; 

import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 

@Controller 
@RequestMapping("/") 
public class LandingPageController { 

    @RequestMapping(method=RequestMethod.GET) 
    public String redirect() { 
     return "landingPage"; 
    } 
} 

landingPage.html:

<!DOCTYPE html> 
<html> 
    <head> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge" /> 
    <meta charset="utf-8" /> 
    <title>SAPUI5 Walkthrough</title> 
    <script 
    id="sap-ui-bootstrap" 
    src="https://openui5.hana.ondemand.com/resources/sap-ui-core.js" 
    data-sap-ui-theme="sap_bluecrystal" 
    data-sap-ui-libs="sap.m" 
    data-sap-ui-compatVersion="edge" 
    data-sap-ui-preload="async" 
    data-sap-ui-resourceroots='{ 
     "sap.ui.demo.wt": "./" 
    }'> 
    </script> 
    <script> 
    sap.ui.getCore().attachInit(function() { 
     sap.ui.xmlview({ 
      viewName : "sap.ui.demo.wt.view.App" 
      }).placeAt("content"); 
    }); 
    </script> 
    </head> 
    <body class="sapUiBody" id="content"> 
    </body> 
</html> 

App.view.xml:

<mvc:View 
    xmlns="sap.m" 
    xmlns:mvc="sap.ui.core.mvc"> 
    <Text text="Hello World"/> 
</mvc:View> 

Мое приложение Файл .properties empty, а pom.xml - это то, что было создано Spring Initializr.

Я считаю, что вопрос с этой линией в landingPage.html, но я не знаю, что еще поставить, кроме «./»:

data-sap-ui-resourceroots='{ 
     "sap.ui.demo.wt": "./" 
    } 

Я был в состоянии получить эту работу до шага 3 в учебнике OpenUI5; однако, кажется, что, как только я должен определить представление в XML-файле, библиотека OpenUI5 не может его найти. Я не знаю, куда еще положить файл App.view.xml, я бы подумал, что где-нибудь под статической папкой будет хорошо ...

Я не уверен, связано ли это с тем фактом, что я использую встроенный Tomcat, но я бы хотел, чтобы это работало с использованием встроенного Tomcat.

Любые предложения о том, как я могу сделать эту работу?

+0

Как выглядит URL-адрес вашего сайта landingPage.html? – hirse

+0

Как я могу понять Spring MVC для работы, вы не можете найти destinationPage.html через URL-адрес, так как это фактически шаблон представления, а не статический ресурс. Основываясь на методе RequestMapping, определенном в LandingPageController, перейдя по адресу http: // localhost: 8080 /, он вызовет метод redirect(), который отобразит шаблон представления landingPage.html. Единственный статический файл, который у меня есть, - это представление OpenUI5 XML, которое можно найти по адресу http: // localhost: 8080/webapp/view/App.view.xml – sadiq

ответ

0

Я не знаком с Spring или какой-либо из упомянутых фреймворков Java, но я могу попытаться помочь вам с resourceRoots.

С помощью этой настройки вы можете определить структуру OpenUI5, где можно найти определенные ресурсы.

Установка "sap.ui.demo.wt": "./" означает, что все, начиная с sap.ui.demo.wt, можно найти в том же каталоге, что и текущая страница/файл. Любые дополнительные .<something> означает подпапку с таким именем.

Вы можете определить resourceRoots относительно вашего HTML файла или абсолютные, используя, например:
"sap.ui.demo.wt": "/resources/static/webapp"
В этом случае ваш взгляд с именем sap.ui.demo.wt.view.App будет найдено (или, по крайней мере, искал) на /resources/static/webapp/view/App.view.xml.

+0

Спасибо за помощь @hirse. Когда я запускаю приложение, в его нынешнем виде, я могу найти представление в http: // localhost: 8080/webapp/view/App.view.xml. Поэтому в resourceRoots я попытался установить его в '' sap.ui.demo.wt ":"/webapp "', и я даже попробовал 'sap.ui.demo.wt": "/ webapp/view" '. Я также принял ваше предложение и попробовал '' sap.ui.demo.wt ":"/resources/static/webapp "'. Ничего из этого не работает ... Я не уверен, как он использует resourceRoots для поиска на сервере, но мне интересно, если встроенный Tomcat каким-то образом препятствует этому ... – sadiq

+0

Альтернативно (и менее идеально) есть способ явно указать ресурсы, а не разрешать их определять путем определения корня? Что-то вроде 'sap.ui.registerResource ("/webapp/view/App.view.xml ")'? – sadiq

+0

@sadiq, вы можете использовать инструменты разработчика браузеров, чтобы узнать, какой путь запрошен, и попытайтесь соответствующим образом адаптироваться. – hirse

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