Java 从Spring应用程序中的FreeMarker获取模板文本
在我的Spring应用程序中,我想使用FreeMarker生成我的应用程序将发送的电子邮件文本。生成的文本将永远不会返回到视图,因此我不需要配置FreeMarker视图解析器。文档似乎表明我应该像这样配置FreeMarkerConfiguration FactoryBeanJava 从Spring应用程序中的FreeMarker获取模板文本,java,spring,templates,freemarker,Java,Spring,Templates,Freemarker,在我的Spring应用程序中,我想使用FreeMarker生成我的应用程序将发送的电子邮件文本。生成的文本将永远不会返回到视图,因此我不需要配置FreeMarker视图解析器。文档似乎表明我应该像这样配置FreeMarkerConfiguration FactoryBean <bean id="freemarkerConfiguration" class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBea
<bean id="freemarkerConfiguration" class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean">
<property name="templateLoaderPath" value="/WEB-INF/freemarker/"/>
</bean>
似乎在Spring和FreeMarker之间提供了一个替代集成,这使得检索模板文本变得非常明显,但我不希望向我的应用程序添加额外的依赖项,除非这是绝对必要的
另外,我是否需要向FreeMarkerConfiguration FactoryBean添加一些额外的配置,以确保缓存模板
干杯,
这样的事情应该行得通 在您提供的代码之前,请初始化:
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);
StringBuffer content=new StringBuffer();
试一试{
content.append(FreeMarkerTemplateUtils.processTemplateIntoString(
getTemplate(templateName),templateVars);
}捕获(IOE异常){
//处理
}捕获(模板异常e){
//处理
}
message.setFrom(getMailFromName()+);
message.setTo(getMailTo());
if(getCcTo()!=null)
message.setCc(getCcTo());
message.setSubject(getSubject());
message.setText(content.toString());
发送(消息);
以下是我的applicationContext.xml:
<bean id="freemarkerMailConfiguration"
class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean">
<property name="templateLoaderPath" value="/WEB-INF" />
</bean>
<bean id="yourEmailServiceClass" class="YourEmailServiceClass">
<property name="mailSender" ref="mailSender" />
<property name="freemarkerMailConfiguration" ref="freemarkerMailConfiguration" />
<property name="freemarkerTemplate" value="email.ftl" />
<property name="mailFromName" value="John Q. Programmer" />
<property name="mailFromAddr" value="john.q.programmer@mail.com" />
<property name="subject" value="Email Subject" />
</bean>
还有你的问题
我只在“viewResolver”bean中看到了一个bean属性“cache”,您说过不会使用它
另请参见:谢谢,您命名为configuration的变量可能是我命名为freemarkerConfiguration的bean?是的,在我们使用的类中,“configuration”变量的类型为“configuration”。请参阅我修订的帖子^^仍然没有配置定义。应该是
mailssender mailssender=new javamailssenderimpl()代码>。否则效果很好,谢谢。
<bean id="freemarkerMailConfiguration"
class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean">
<property name="templateLoaderPath" value="/WEB-INF" />
</bean>
<bean id="yourEmailServiceClass" class="YourEmailServiceClass">
<property name="mailSender" ref="mailSender" />
<property name="freemarkerMailConfiguration" ref="freemarkerMailConfiguration" />
<property name="freemarkerTemplate" value="email.ftl" />
<property name="mailFromName" value="John Q. Programmer" />
<property name="mailFromAddr" value="john.q.programmer@mail.com" />
<property name="subject" value="Email Subject" />
</bean>