[英]Getting template text from FreeMarker in Spring app
在我的Spring應用程序中,我想使用FreeMarker生成將由我的應用程序發送的電子郵件文本。 生成的文本永遠不會返回到視圖,因此我不需要配置FreeMarker視圖解析器。 該文檔似乎表明我應該像這樣配置一個FreeMarkerConfigurationFactoryBean
<bean id="freemarkerConfiguration" class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean">
<property name="templateLoaderPath" value="/WEB-INF/freemarker/"/>
</bean>
一旦我配置了這個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:
<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',你說你不會使用它。
另請參閱: 第14章。集成視圖技術
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.