Spring Boot v2.0 не видит шаблон - PullRequest
0 голосов
/ 26 июня 2018

Я пытаюсь запустить демонстрационное приложение, созданное в Spring Initializr . Версия Spring Boot - 2.0.3.

Я создал index.html и поместил его в папку resources/templates. Когда я запускаю spring-boot:run, одно из сообщений в консоли сообщает:

Tomcat started on port(s): 8080 (http) with context path ''

И когда я открываю localhost:8080, это дает мне страницу ошибки Whitelabel Spring

Я пытался добавить строку server.servlet.context-path=/ в файл resources/application.properties. Но это не помогает.

Как установить правильный путь для индекса?

UPD: похоже, проблема только в части шаблона.

Содержимое index.html в resources/templates:

<!DOCTYPE html>
<html lang="en">

<body>
<h1>Hello {{ name }}!!!</h1>
</body>
</html>

Содержимое IndexController.java:

@Controller
public class IndexController {
    @GetMapping("/")
    public ModelAndView index() {
        Map<String, String> model = new HashMap<>();
        model.put("name", "world");
        return new ModelAndView("index", model);
    }

Я использую усы, в pom.xml:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-mustache</artifactId>
    </dependency>
    <dependency>

И это дает мне ошибку белого ярлыка. Даже с server.servlet.context-path=/ в resources/application.properties

Если я помещаю файл в resource/static и переименовываю файл в «index.html» в IndexController, он отображается, но «name» явно не заменяется.

Что я делаю не так?

Ответы [ 3 ]

0 голосов
/ 26 июня 2018

Spring Boot направляет запрос соответствующему контроллеру.Таким образом, определите простой класс Controller для обработки запроса и поместите этот класс в пакет ниже или внутри корневого пакета вашего проекта:

@Controller
public class MyController {

   @GetMapping(value={"/"})
   public ModelAndView getRoot()
   {
       return new ModelAndView("index");
   }
}

Примечание-контроллер создается из пакета org.springframework.stereotype иGetMapping-Annotation от org.springframework.web.bind.annotation.

Возможно, вам также необходимо расширить файл pom.xml.Проверьте, содержит ли он зависимость spring-boot-starter-web (если вы выбрали «Проект Maven»).

0 голосов
/ 02 июля 2018

Наконец, этот ответ помог.Кажется, это особенность усов.Это странно, потому что в SpringBoot 1.5.x все отлично работает с пустым файлом application.properties.Если кто-то знает, почему он изменился на SpringBoot 2.0 - поделитесь в комментариях.

0 голосов
/ 26 июня 2018

Если вы хотите использовать статический контент, вам нужно поместить его в папку static в папке resources.

templates используется при использовании технологии просмотра, такой как контроллеры Thymeleaf и Spring MVC.

Вы можете найти больше информации здесь: https://spring.io/blog/2013/12/19/serving-static-web-content-with-spring-boot

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...