gpt4 book ai didi

java - 如何强制我的模板解析器对/mail/* 模板使用 ClassLoaderTemplateResolver

转载 作者:太空宇宙 更新时间:2023-11-04 11:29:10 24 4
gpt4 key购买 nike

我正在为我的 Spring Boot 应用程序 ServletContextTemplateResolver 和 ClassLoaderTemplateResolver 使用两个模板解析器。

我正在将 ServletContextTemplateResolver 用于我的网页的/WEB-INF/* html 模板。另一方面,我将使用 ClassLoaderTemplateResolver 作为我的/mail/html 模板。代码如下:

@Bean(name ="templateResolver") 
public ServletContextTemplateResolver getTemplateResolver() {
ServletContextTemplateResolver templateResolver = new
ServletContextTemplateResolver();
templateResolver.setPrefix("/WEB-INF/templates/");
templateResolver.setSuffix(".html");
templateResolver.setTemplateMode("XHTML");
templateResolver.setOrder(Integer.valueOf(1));
return templateResolver;
}

@Bean(name ="emailTemplateResolver")
public ClassLoaderTemplateResolver getEmailTemplateResolver() {
ClassLoaderTemplateResolver templateResolver = new
ClassLoaderTemplateResolver();
templateResolver.setOrder(Integer.valueOf(2));
templateResolver.setPrefix("/mail/");
templateResolver.setSuffix(".html");
return templateResolver;
}

调用邮件模板时出现以下错误:

Resource resolution by ServletContext with org.thymeleaf.resourceresolver.ServletContextResourceResolver can only be performed when context implements org.thymeleaf.context.IWebContext [current context: org.thymeleaf.context.Context]

如何强制它对/mail/* 模板使用 ClassLoaderTemplateResolver?

最佳答案

您可能正在渲染一个 html 文件,并希望将生成的 html 文件保存在一个字符串变量中,稍后您将使用它通过 html 到 pdf 转换来发送电子邮件。因此,以下代码将在 Spring boot 中为您提供帮助:

@Controller
public class jataController {

@Autowired
private TemplateEngine templateEngine;

@GetMapping(value = "/manual-thym")
@ResponseBody
public void justSample() {
Context context = new Context();
String filename = "templates/view/generated-ticket.html";
String html = renderHtml(filename, context);
System.out.println("template\n" + html);
}

private String renderHtml(String filename, Context context) {

ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
templateResolver.setSuffix(".html");
templateResolver.setTemplateMode(TemplateMode.HTML);
templateResolver.setCacheable(false);
templateResolver.setOrder(1);
templateResolver.setCharacterEncoding("UTF-8");

templateEngine.setTemplateResolver(templateResolver);

String html = templateEngine.process(filename, context);

return html;
}
}

关于java - 如何强制我的模板解析器对/mail/* 模板使用 ClassLoaderTemplateResolver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43994172/

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