Spring Boot Thymeleaf无法解析模板

时间:2019-11-19 03:01:14

标签: java spring-boot spring-mvc thymeleaf

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

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

这里是文件目录

enter image description here

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

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中缺少依赖项

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

在Spring Boot Thymeleaf Starter 2.0及更高版本中,您需要显式包括ultraq thymeleaf布局方言依赖项。 在Maven中将是:

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

答案 1 :(得分:0)

我开始好奇是否还有其他问题。因此,我在application.properties文件中包含了“ server.port = 8081”。当我运行它时并没有。考虑到这一点,并且输出表明它在classpath下找不到模板文件夹:/我开始怀疑是否默认值被某些内容覆盖。

我根本没有更改任何配置。我唯一要做的就是将build.gradle配置为导入依赖项。

我找到了一个建议使用gradle.Tasks.Application.bootRun运行它的论坛

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

根据this issue,建议的解决方法是重新导入项目。

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

已成功!现在一切正常。 application.properties正在运行,并且我的HTML文件已成功加载到/ src / main / resources / templates

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