By default, where does Spring Boot expect views to be stored?

后端 未结 8 2005
盖世英雄少女心
盖世英雄少女心 2020-12-01 06:29

I\'m experimenting on re-writing my configuration-heavy, vanilla Spring MVC project using Spring Boot. I started a brand new Spring Boot project in IntelliJ using the Spring

8条回答
  •  无人及你
    2020-12-01 07:02

    The Solution

    I found the answer via trial-and-error, which turned out rather annoying. I hope someone can correct me if this conclusion is wrong, but it appears that Spring Boot does not like the string WEB-INF. I renamed the WEB-INF directory to view and changed the application.properties to the following and the view loaded successfully.

    spring.mvc.view.prefix=/view/
    spring.mvc.view.suffix=.jsp
    

    Additional Findings

    The objective of this exercise was to create a working example of a minimal, Java-based configuration so I continued minimalising the setup. I then found that lots of advice dished out on multiple SO threads and forums did not help. @JBNizet provided a link in his comment to the Spring Boot docs which lists a very salient point that no one has mentioned: JSPs simply do not play well with Spring Boot as it has limitations depending on the embedded container chosen. With that in mind, I decided to try replacing JSPs with ThymeLeaf templates.

    My new working config removes the need for these:

    • No need to add application.properties: spring.mvc.view.prefix + spring.mvc.view.suffix
    • No need to change the packaging type from jar to war
    • No need to modify main class
    • No need to add pom.xml dependencies for
      • org.springframework.boot / spring-boot-starter-tomcat
      • org.springframework.boot / tomcat-embed-jasper
      • javax.servlet / jstl

    So just the default Spring Boot template and 2 ThymeLeaf dependencies with the views named as ViewName.html placed in src/main/resources/templates.

    
        org.thymeleaf
        thymeleaf
    
    
    
        org.thymeleaf
        thymeleaf-spring4
    
    

提交回复
热议问题