默认情况下,Spring Boot期望视图存储在哪里?
我正在尝试使用Spring Boot" title="Spring Boot">Spring Boot重写配置繁重的香草Spring MVC项目。我使用Spring Boot
Initiaizer在IntelliJ中启动了一个全新的Spring
Boot项目,并且正在尝试基于Java的最小配置。许多教程指出,生成的默认主类就足够了,其中@SpringBootApplication
包含了所有内容。我有一个示例REST
Controller可以工作并以JSON形式返回一个序列化对象,但是事实证明很难显示视图。我的结构如下,除我创建的webapps目录外,所有其他默认设置。
src`-main
`-java
`-resources
`-static
`-templates
`-webapp
`-WEB-INF
`-home.jsp
控制器很简单。
@Controllerpublic class ViewMaster {
@RequestMapping("/home")
public String home() {
return "home";
}
}
没有任何配置,我想知道Spring
Boot希望将视图存储在何处以及使用什么扩展名(html?)。我也尝试将以下内容包括在内,application.properties
但仍然出现404错误。在资源中四处移动WEB-
INF目录或仅html文件也无济于事。
spring.mvc.view.prefix=/WEB-INF/spring.mvc.view.suffix=.jsp
我还尝试了在我的pom.xml中包含这些依赖关系,但没有任何效果。
<dependency> <groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
我必须在这里遗漏一些令人痛苦的显而易见的东西,如果有人可以指出这一点,请多谢!
回答:
我通过反复试验找到了答案,结果很烦人。如果这个结论是错误的,我希望有人可以纠正我,但是看来Spring Boot不喜欢string WEB-
INF。我将WEB-INF
目录重命名为,view
并将更改application.properties
为以下内容,并成功加载了视图。
spring.mvc.view.prefix=/view/spring.mvc.view.suffix=.jsp
本练习的目的是创建一个
,基于Java的配置的工作示例,因此我继续最小化设置。然后,我发现在多个SO线程和论坛上提出的很多建议都无济于事。@JBNizet在他的评论中提供了指向Spring
Boot文档的链接,该链接列出了一个没有人提到的非常突出的观点:
。考虑到这一点,我决定尝试用ThymeLeaf模板替换JSP。
我的新工作配置消除了对这些的需要:
- 无需添加
application.properties
:spring.mvc.view.prefix
+spring.mvc.view.suffix
- 无需将包装类型从 改为
- 无需修改主类
- 无需为其添加pom.xml依赖项
org.springframework.boot / spring-boot-starter-tomcat
org.springframework.boot / tomcat-embed-jasper
javax.servlet / jstl
所以,只是默认spring引导模板和2
ThymeLeaf依赖关系与命名的意见ViewName.html
摆在src/main/resources/templates
。
<dependency> <groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring4</artifactId>
</dependency>
以上是 默认情况下,Spring Boot期望视图存储在哪里? 的全部内容, 来源链接: utcz.com/qa/409400.html