当前位置:  开发笔记 > 编程语言 > 正文

在Spring应用程序中从FreeMarker获取模板文本

如何解决《在Spring应用程序中从FreeMarker获取模板文本》经验,为你挑选了1个好方法。

在我的Spring应用程序中,我想使用FreeMarker生成将由我的应用程序发送的电子邮件文本.生成的文本永远不会返回到视图,因此我不需要配置FreeMarker视图解析器.该文档似乎表明我应该像这样配置一个FreeMarkerConfigurationFactoryBean


   

一旦我配置了这个bean,我如何实际获得为特定模板生成的文本,以及特定的变量Map.换句话说,后面是什么代码:

String templateName = "email"
Map templateVars = new HashMap();
templateVars.put("firstName", "john");
templateVars.put("surname", "doe");    
// Now how do I get the template text?

Spring模块似乎提供了Spring和FreeMarker之间的另一种集成,这使得检索模板文本非常明显,但我不想在我的应用程序中添加额外的依赖项,除非绝对必要.

另外,我是否需要在FreeMarkerConfigurationFactoryBean中添加一些额外的配置以确保缓存模板?

干杯,唐



1> Chris Serra..:

这样的事情应该有效

在您提供的代码之前,初始化:

MailSender mailSender = new JavaMailSenderImpl();
SimpleMailMessage message = new SimpleMailMessage();

然后,在您的代码之后添加:

StringBuffer content = new StringBuffer();
try {
    content.append(FreeMarkerTemplateUtils.processTemplateIntoString(
        configuration.getTemplate(templateName), templateVars));
} catch (IOException e) {
    // handle
} catch (TemplateException e) {
    // handle
}

message.setFrom(getMailFromName() + " <" + getMailFromAddr() + ">");
message.setTo(getMailTo());
if (getCcTo() != null)
    message.setCc(getCcTo());
message.setSubject(getSubject());
message.setText(content.toString());

mailSender.send(message);

这是我的applicationContext.xml:


    


    
    
    
    
    
    

你的缓存问题......

我只在'viewResolver'bean中看到过bean属性'cache',你说你不会使用它.

另请参阅:第14章.集成视图技术

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有