2017-06-03 175 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

相关问题