当前位置: 首页 > 知识库问答 >
问题:

Thymeleaf:错误解析模板

公孙弘图
2023-03-14
@Configuration
public class ThymeleafConfig {

    @Bean
    public ServletContextTemplateResolver templateResolver() {
        ServletContextTemplateResolver resolver = new ServletContextTemplateResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".html");
        resolver.setTemplateMode("HTML5");
        resolver.setOrder(1);
        return resolver;
    }

    @Bean
    public SpringTemplateEngine templateEngine() {
        SpringTemplateEngine engine = new SpringTemplateEngine();
        engine.setTemplateResolver(templateResolver());
        engine.addDialect(new LayoutDialect());
        engine.addDialect(new SpringSecurityDialect());
        engine.addDialect(new SpringStandardDialect());
        return engine;
    }

    @Bean
    public ThymeleafViewResolver thymeleafViewResolver() {
        ThymeleafViewResolver resolver = new ThymeleafViewResolver();
        resolver.setTemplateEngine(templateEngine());
        return resolver;
    }
}
webapp/
..WEB-INF/
....views/
......layouts/
........default.html
......user
........index.html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
<head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Default</title>
    <link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet" />
</head>
<body>

    <header>
        This is a header from default.html
    </header>

    <section layout:fragment="content">
        <p>Content should go here!</p>
    </section>

    <footer>
        Footer from default
        <p layout:fragment="custom-footer">Custom footer here!</p>
    </footer>

    <!-- scripts -->
    <script src="https://code.jquery.com/jquery-2.1.3.min.js" />
    <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>

</body>
</html>

下面是index.html

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
      layout:decorator="layouts/default.html">
<head>
    <title>Users</title>
</head>
<body>
<section layout:fragment="content">
    <p>This is a paragraph from content page 1</p>
</section>
<footer>
    <p layout:fragment="custom-footer">This is some footer content from content page 1</p>
</footer>
</body>
</html>

它们在不同的文件夹中,但pathing应该工作,除非我只是错过了一些真正愚蠢的东西。

共有1个答案

翟兴邦
2023-03-14

我找到我的问题了。如果在Thymeleaf配置中指定后缀,则不需要.html扩展名。

@Bean
public ServletContextTemplateResolver templateResolver() {
    ServletContextTemplateResolver resolver = new ServletContextTemplateResolver();
    resolver.setPrefix("/WEB-INF/views/");
    resolver.setSuffix(".html"); // here
    resolver.setTemplateMode("HTML5");
    resolver.setOrder(1);
    return resolver;
}

应该是:

layout:decorator="layouts/default"

而不是:

layout:decorator="layouts/default.html"
 类似资料:
  • 所以,我看到在Stackoverflow中都能回答这个问题,但对我没有任何帮助。(SpringMVC+Thymeleaf,错误消息是:模板可能不存在,或者任何已配置的模板解析程序都无法访问

  • 我试图在我的PDF模板中包含一个字母头,如下所示: 片断/header.html template.html html位于app/src/main/resources/template/pdf/文件夹中。我必须包括css和图像文件与完整的路径(从项目的根),以使它们工作。我尝试包含完整路径的片段(如上),只包含片段/头,但每次都得到相同的错误。 我正在使用 Spring-Boot-Starter-

  • 我创建了带有模块(Patients、Notes、Reports、Domain)的Maven多模块应用程序。问题出在使用MongoDB的模块Notes中。 我想运行GET addNote视图时遇到了问题-@GetMapping(“/note/add/{patientId}”)。GET注释列表视图工作正常,其他视图我也有。 控制台问题: 注意控制器: 病人注意: 注意: 注意存储库: 模板-注释/ad

  • 我正在实现密码重置功能。为了显示具有这种功能的网页,我使用了百里香。但是当我调用我的简单的demo.html页面(见下面的代码)时,它抛出以下错误: 出现意外错误(类型 = 内部服务器错误,状态 = 500)。 异常解析文档:模板=“演示”,第 10 行 - 列 豆配置: 演示. html: 控制器: 我错过了什么?

  • 我需要使用Thymeleaf模板为不同地区发送电子邮件。 我的HTML中有下一部分 我有下一个密码 我有下一个豆子 我正在使用下一个依赖项 我在“资源”文件夹中有我需要的每种语言的资源包消息。如果你用ctrl左键从我的html中检查#{TEST},你可以看到它看到属性文件,所以IDEA可以解析它。 当我运行我的应用程序并尝试发送电子邮件时,我得到了下一个结果 ??TEST_de?? 对于其他语言,

  • 我的问题是我未能显示胸腺叶模板。我怀疑配置错误,但我似乎找不到它。提前感谢:) 波姆。xml: 模板在: Spring配置: 控制器: 我正在尝试访问:并获得404。 另一件事,有人能解释(或给文档一个链接)哪个servlet被用来“返回”模板html吗?是Spring调度员servlet吗? 好的,所以我忘记了,谢谢@Benjamin c.然而,添加它会产生: