弹簧靴找不到 Thymeleaf 视图
Posted
技术标签:
【中文标题】弹簧靴找不到 Thymeleaf 视图【英文标题】:Thymeleaf views not found with springboot 【发布时间】:2017-01-04 22:07:09 【问题描述】:我正在尝试按照本教程将百里香添加到 springboot 应用程序,但我似乎无法让它工作。 教程:http://spr.com/part-2-adding-views-using-thymeleaf-and-jsp-if-you-want/
当我在 LoginController 中使用 @RestController 启动应用程序时,我能够让 springboot 正常工作,但是当我将 @RestController 更改为 @Controller 时,我收到一个错误页面:
出现意外错误(类型=未找到,状态=404)。 没有可用的消息
我在控制器中设置了一个断点,并确认它正在访问 LoginController 中的 index 方法。我觉得这与我添加 Thymeleaf 的方式有关,因为我没有对应用程序做太多其他事情,但到目前为止我所做的一切都会导致相同的错误页面。
我的 build.gradle
buildscript
repositories
maven url "http://repo.spring.io/libs-snapshot"
mavenLocal()
dependencies
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.4.0.RELEASE")
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'spring-boot'
jar
baseName = 'GazeFest'
version = '0.1.0'
repositories
mavenCentral()
sourceCompatibility = 1.8
targetCompatibility = 1.8
dependencies
compile("org.springframework.boot:spring-boot-starter-web")
compile("org.thymeleaf:thymeleaf-spring4:3.0.0.RELEASE")
task wrapper(type: Wrapper)
gradleVersion = '3.0'
我的应用程序.java
打包凝视;
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);
我的 LoginController.java
package gazefest;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Controller
public class LoginController
@RequestMapping("/")
public String index(Model model)
model.addAttribute("message", "HELLO!");
return "index";
我的 index.html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head lang="en">
<meta charset="UTF-8" />
<title>HELLO</title>
</head>
<body>
<p th:text="$message"></p>
</body>
</html>
我的文件结构
感谢观看!
【问题讨论】:
【参考方案1】:我认为您不应该使用 thymeleaf-spring4 依赖项,但您应该使用 Thymeleaf 的 Spring boot starter。
对于 Maven:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
对于 Gradle:
compile("org.springframework.boot:spring-boot-starter-thymeleaf")
我建议使用Spring Initializr 来设置您的项目。这允许您选择任何 Spring boot 启动器并将其添加到 Gradle/Maven 描述符中,这样您就不会因选择依赖项而犯任何错误。
【讨论】:
我尝试使用 Spring Initializr 和上面相同的 LoginController.java 启动一个新项目,但我遇到了相同的错误页面。 我需要指定我的 html 文件所在的位置吗?我认为我目前拥有 index.html 的资源/模板文件夹应该是默认的,但它好像找不到它们 src/main/resources/templates 文件夹(应该由 Spring Initialzr 生成)应该是正确的文件夹。 添加 compile("org.springframework.boot:spring-boot-starter-thymeleaf") 到 gradle config 解决了我的问题。这是一件非常棘手的事情,因为最初我在控制台中看到了 404 页面并且没有错误日志。在这种情况下,问题实际上与缺少 thymeleaf 依赖关系并不明显。以上是关于弹簧靴找不到 Thymeleaf 视图的主要内容,如果未能解决你的问题,请参考以下文章