2017-06-03 177 views
1

默認情況下,Thymeleaf需要所有html文件存在於scr/main/java/resources/templates中。爲了不在模板文件夾中創建一個混亂,我需要在那裏創建不同的subloders。問題是放置在那裏的html文件從來沒有得到解決。示例如下。Thymeleaf + Spring Boot:在子文件夾中放置HTML

結構:

project structure

的IndexController:

@Controller 
public class IndexController { 
    @GetMapping(value = "/") 
    public String index() { 
     return "index"; 
    } 
} 

默認模板:

<!DOCTYPE html> 
<html lang="en" 
     xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"> 
<head> 
    <meta charset="UTF-8"/> 
    <title>Default template</title> 
</head> 
<body> 

<section id="site-content" layout:fragment="content"></section> 

</body> 
</html> 

指數:

<!DOCTYPE html> 
<html lang="en" 
     xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" 
     layout:decorator="default"> 
<head> 
    <meta charset="UTF-8"/> 
    <title>Index</title> 
</head> 
<body> 

<div layout:fragment="content"> 
    <div> 
     This is index page 
    </div> 

    <a href="subfolder/page.html">Page</a> 
</div> 

</body> 
</html> 

頁中的子文件夾:

<!DOCTYPE html> 
<html lang="en" 
     xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" 
     layout:decorator="default"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Page</title> 
</head> 
<body> 

<div layout:fragment="content"> 
    This is a page in the subfolder 
</div> 

</body> 
</html> 

當我打開索引頁面,然後單擊鏈接到page.html中,我得到這個:

error

我做了什麼錯?

回答

2

您沒有/subfolder/page.html控制器映射,這不是Thymeleaf和Spring的工作方式。

您不能輕易引用純HTML文件,因爲它們在技術上並不存儲在那裏。你必須引用在Spring中定義的端點,然後將選擇HTML文件進行渲染,就像這樣:

@Controller 
public class IndexController { 
    @GetMapping(value = "/subfolder/page") 
    public String index() { 
     return "subfolder/page"; 
    } 
} 

,並創建你的鏈接是這樣的:

<a href="subfolder/page">Page</a> 
+0

謝謝,「回報「的子文件夾/頁面「'幫助。我習慣了jsp,我不必在返回類別中指定文件夾名稱,只是查看名稱。 Thymeleaf是一個有點不同的故事。 – sva605

相關問題