gpt4 book ai didi

java - SpringTemplateEngine.process不读取文件(thymeleaf)

转载 作者:行者123 更新时间:2023-12-02 11:49:53 25 4
gpt4 key购买 nike

我正在尝试使用 Thymeleaf 模板引擎创建 html 电子邮件,方法如下 this tutorial .

我已经创建了模板配置:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.nio.charset.StandardCharsets;
import org.thymeleaf.spring5.SpringTemplateEngine;
import org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver;
import org.thymeleaf.templatemode.TemplateMode;


@Configuration
public class ThymeleafTemplateConfiguration {
@Bean
public SpringTemplateEngine springTemplateEngine() {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.addTemplateResolver(htmlTemplateResolver());
return templateEngine;
}

@Bean
public SpringResourceTemplateResolver htmlTemplateResolver(){
SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
templateResolver.setPrefix("/templates/");
templateResolver.setSuffix(".html");
templateResolver.setTemplateMode(TemplateMode.HTML);
templateResolver.setCharacterEncoding(StandardCharsets.UTF_8.name());
return templateResolver;
}
}

和一个 html 模板:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<p>This is the body to be changed</p>
<p>This is a name: ${name}</p>
</body>
</html>

然后我尝试填充模板:

templateEngine = new SpringTemplateEngine();
Context context = new Context();
context.setVariable("name", "my name");

String html = templateEngine.process("index", context);
System.out.println(html);

但我不是获取填充的模板,而是获取放入进程的第一个参数:

>>> my name

我做错了什么?为什么进程按原样获取参数而不是读取具有指定前缀和后缀的文件? (/templates/index.html)

最佳答案

请注意,在示例中您提到正在创建一个名为 SpringTemplateEngine 的 bean,并且将 SpringResourceTemplateResolver 注入(inject)其中。

您的代码没有使用创建的bean。相反,它会创建一个 SpringTemplateEngine 的新实例。我猜,这个新实例不知道 SpringResourceTemplateResolver。

两个可能的修复

  1. Autowiring bean,而不是创建新实例
  2. 创建此实例的方式与创建 bean 的方式相同,即将 addTemplateResolver 添加到新实例

关于java - SpringTemplateEngine.process不读取文件(thymeleaf),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47966972/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com