WEB-INF не включен в WebApp с использованием SpringBoot, Spring-MVC и Maven - PullRequest
0 голосов
/ 05 октября 2018

У меня есть веб-приложение, использующее Spring-MVC, созданное с помощью Maven.Когда я генерирую файл JAR, приложение запускается просто отлично.Контроллер выполняется, но когда я достигаю этой части:

@RequestMapping(value = "/test-block", method = RequestMethod.GET)
public ModelAndView block(Model model) {
    return new ModelAndView("templates/test-block");
}

Я получаю эту ошибку:

There was an unexpected error (type=Not Found, status=404).
/WEB-INF/templates/test-block.jsp

Обратите внимание, что отладка или запуск в IDE работает нормально.

Моя папка:

src
|--main
   |--java
      |--com.xxx // sources
      webapp
      |--WEB-INF
         |--templates
            |--*.jsp // jsp files
      resources
      |--application.properties

Свойства моего приложения:

spring.mvc.view.prefix=/WEB-INF/
spring.mvc.view.suffix=.jsp

Я проверил сгенерированный файл JAR и нигде не вижу WEB-INF.

edit:

pom file:

    <packaging>war</packaging>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>8</source>
                    <target>8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

Ответы [ 3 ]

0 голосов
/ 05 октября 2018

Вам следует создать .war вместо .jar для веб-приложения, и вы увидите папку WEB-INF.

Также измените

spring.mvc.view.prefix=/WEB-INF/ на spring.mvc.view.prefix=/WEB-INF/templates и

ModelAndView("templates/test-block") до ModelAndView("test-block") для устранения ошибки 404.

0 голосов
/ 05 октября 2018

Ссылка на документацию Spring Boot для обслуживания статического содержимого .

Примечание:

По умолчанию Spring Boot предоставляет статическое содержимое из каталога с именем /статические (или / public или / resources или / META-INF / resources) в пути к классам или в корне ServletContext.Он использует ResourceHttpRequestHandler из Spring MVC, так что вы можете изменить это поведение, добавив собственный WebMvcConfigurer и переопределив метод addResourceHandlers.

...

Вы также можете настроитьрасположение статических ресурсов с помощью свойства spring.resources.static-location (замена значений по умолчанию списком расположений каталогов).

...

Doне используйте каталог src / main / webapp, если ваше приложение упаковано в jar-файл.Хотя этот каталог является общепринятым стандартом, он работает только с военным пакетом, и он игнорируется большинством инструментов сборки, если вы генерируете jar.

Итак, вы видите ожидаемое поведение,Вы можете переместить ваши шаблоны в одно из ожидаемых местоположений, настроить местоположения по умолчанию или использовать упаковку.

0 голосов
/ 05 октября 2018

Spring boot ищет папку ресурсов для веб-страниц.Папка Webapp не находится в classpath весеннего загрузочного приложения.Вам нужно использовать плагин maven, чтобы скопировать папку вашего веб-приложения в файл jar / war.Он работает в IDE, поскольку он точно знает, где найти веб-страницы.

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