天天看點

SpringBoot 用Thymeleaf模版傳回頁面出現404

現象

在搭建一個springboot架構前,突然發現通路控制層的json資料等都沒問題,debug也能進入控制層的請求方法中,但是在傳回到thymeleaf模闆頁面就報404

@RequestMapping(value = {"/","index"})
    public String myIndex() {
        return "index";
    }
           

嘗試解決

以前也是如此搭建的,是沒問題的,于是乎上網查了下,大概有如下兩種說法:

第一種:控制層中的方法路徑中的index 不能和傳回的view的名稱一緻:嘗試改變,問題依然存在

第二種:mavn  jar包沖突,需要将本地的mavn倉庫清空了,讓重新下載下傳jar包:嘗試,問題依然存在。

最終解決辦法

其實我還是懷疑上面第二種就是我的錯,因為我是在父子產品下開了多各 子產品,之前存在了兩個子子產品。

為了排除幹擾,于是,我單獨建立了一個獨立的springboot項目,照例配置,竟然成功了。。。

排查發現新生成的springboot的版本是2.4.1,而之前有問題的springboot的版本是2.2.7.RELEASE,

于是修改了sprinboot的版本到2.4.1,發現問題解決了。。。

這個時候覺得應該是springboot的版本和下面的thymeleaf的版本是不是對應出的問題,于是本着再驗證的态度,又把springboot的版本号再改回去

結果問題也解決了。。。。。

結論

沒有結論,問題解決了,修改了sprigboot的版本到最新的,然後再傳回去,就好了。自我感覺應該還是mavenjar包的問題。

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.1</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.nj</groupId>
    <artifactId>springboot-security</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot-security</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>
           

application.yml

spring:
  thymeleaf:
    prefix: classpath:/templates/
    cache: false
    suffix: .html
    encoding: UTF-8
    servlet:
      content-type: text/html