【问题标题】:Spring Boot Thymeleaf won't resolve templateSpring Boot Thymeleaf 不会解析模板
【发布时间】:2020-03-14 11:57:39
【问题描述】:

我在让我的 Spring Boot 应用程序加载我的简单网页时遇到问题。 我已经复制了here 提供的示例,并在模板目录中实现了它们 我不断收到此错误

org.thymeleaf.exceptions.TemplateInputException: 解析模板 [index] 时出错,模板可能不存在或可能无法被任何已配置的模板解析器访问

这里看看文件目录

这是控制器类中的所有内容

package com.example.cloud_computing_project;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HomeController {

    @GetMapping("/")
    private String OpenMainPage() {
        return "index";
    }
}

这是 build.gradle 的样子

plugins {
    id 'org.springframework.boot' version '2.2.1.RELEASE'
    id 'io.spring.dependency-management' version '1.0.8.RELEASE'
    id 'java'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

configurations {
    developmentOnly
    runtimeClasspath {
        extendsFrom developmentOnly
    }
}

repositories {
    mavenCentral()
    maven { url 'https://repo.spring.io/milestone' }
}

ext {
    set('springCloudVersion', "Hoxton.RC2")
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    //implementation 'org.springframework.cloud:spring-cloud-starter-aws-messaging'
    developmentOnly 'org.springframework.boot:spring-boot-devtools'
    runtimeOnly 'com.microsoft.sqlserver:mssql-jdbc'
    testImplementation('org.springframework.boot:spring-boot-starter-test') {
        exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
    }
}

dependencyManagement {
    imports {
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
    }
}

test {
    useJUnitPlatform()
}

我环顾四周,据我所知,文件是正确的,文件的位置是正确的,指向该位置的 getmapping 是正确的。我唯一能看出错误的是我的 build.gradle 中可能缺少依赖项

任何帮助将不胜感激,谢谢。

【问题讨论】:

  • 尝试将spring.thymeleaf.mode=HTML 添加到属性文件中
  • @sovannarithcheav 这很遗憾没用。
  • 控制台是否说错了?
  • @sovannarithcheav 它给了我以前遇到的相同错误。
  • @chrylis-onstrike- 抱歉,我误解了你的意思。从技术上讲,我确实有一个 application.properties 文件,但它是空的。我试图把第一个 cmets 建议放在那里,但没有用,所以我删除了它。

标签: java spring-boot spring-mvc thymeleaf


【解决方案1】:

在 Spring Boot Thymeleaf Starter 2.0 及以后,您需要显式包含 ultraq thymeleaf 布局方言依赖项。 在 Maven 中是:

<dependency>
    <groupId>nz.net.ultraq.thymeleaf</groupId>
    <artifactId>thymeleaf-layout-dialect</artifactId>
</dependency>

【讨论】:

  • 非常感谢。这对我发布的问题没有帮助(请参阅我发布的答案),但它确实有助于布局在我运行时不起作用。
【解决方案2】:

我开始好奇是否还有其他方法不起作用。所以我在 application.properties 文件中包含了“server.port=8081”。我运行它时没有这样做。考虑到这一点,输出表明它在类路径下找不到模板文件夹:/ 我开始怀疑默认值是否被某些东西覆盖了。

我根本没有改变任何配置。我唯一做的就是配置 build.gradle 以导入依赖项,仅此而已。

我发现一个论坛建议使用 gradle.Tasks.Application.bootRun 运行它

这确实解决了我遇到的问题。它现在正在查找模板文件夹并加载我的 index.html 文件。它还使用了 application.properties 文件。但是,由于这不是由 IntelliJ 构建和运行的,因此它没有对输出进行颜色编码。

根据this issue,建议的修复是重新导入项目。

我已经将我的项目推送到 git 存储库,并且 .gitignore 不会推送任何可能导致此问题的文件。所以我删除了我的整个工作目录,然后克隆了推送的存储库。

成功了!现在一切正常。 application.properties 正在工作,我的 HTML 文件正在 /src/main/resources/templates 下成功加载

还要感谢@MohamedSanaulla 关于布局方言依赖的建议。在我在 gradle 中添加实现之前,我也遇到了麻烦。

【讨论】:

    猜你喜欢
    • 2016-01-27
    • 1970-01-01
    • 2021-09-25
    • 2018-11-30
    • 2020-10-07
    • 1970-01-01
    • 2016-01-26
    • 2019-02-20
    • 1970-01-01
    相关资源
    最近更新 更多