在我的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中添加一些额外的配置以确保缓存模板?
干杯,唐
这样的事情应该有效
在您提供的代码之前,初始化:
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章.集成视图技术