Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从Spring应用程序中的FreeMarker获取模板文本_Java_Spring_Templates_Freemarker - Fatal编程技术网

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

Java 从Spring应用程序中的FreeMarker获取模板文本,java,spring,templates,freemarker,Java,Spring,Templates,Freemarker,在我的Spring应用程序中,我想使用FreeMarker生成我的应用程序将发送的电子邮件文本。生成的文本将永远不会返回到视图,因此我不需要配置FreeMarker视图解析器。文档似乎表明我应该像这样配置FreeMarkerConfiguration FactoryBean <bean id="freemarkerConfiguration" class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBea

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

<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>