使用 Spring 从 freemarker 获取模板
Posted
技术标签:
【中文标题】使用 Spring 从 freemarker 获取模板【英文标题】:Get templates from freemarker using Spring 【发布时间】:2011-01-18 06:10:56 【问题描述】:我已经开始查看以下线程 -
Getting template text from FreeMarker in Spring app
我的spring配置-
<bean id="fmConfig" class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean">
<property name="templateLoaderPath" value="/WEB-INF/templates"></property>
</bean>
<bean name="/email.do" class="com.email.web.controller.EmailController">
<property name="formView" value="email"/>
<property name="successView" value="email_thanks"/>
<property name="commandName" value="emailForm"/>
<property name="commandClass" value="com.email.bean.EmailForm"/>
<property name="bindOnNewForm" value="true"/>
<property name="fmConfig" ref="fmConfig"/>
</bean>
将控制器类中的电子邮件正文设置为 -
private String makeBody(EmailForm form)
StringBuffer content = new StringBuffer();
try
content.append(FreeMarkerTemplateUtils.processTemplateIntoString(
fmConfig_.getTemplate("email_default_TM.txt"),form));
catch (IOException e)
catch (TemplateException e)
return content.toString();
在这里,我收到一个编译器错误“方法 getTemplate(String) 未定义类型 FreeMarkerConfigurationFactoryBean”。然后我尝试使用 fmConfig 创建一个配置对象 -
try
content.append(FreeMarkerTemplateUtils.processTemplateIntoString(
fmConfig_.createConfiguration().getTemplate("email_default_TM.txt"),form));
catch (IOException e)
catch (TemplateException e)
但开始出现运行时异常 -
org.springframework.beans.factory.BeanCreationException: Error creating bean with name '/email-a-friend.do' defined in ServletContext resource [/WEB-INF/springapps-servlet.xml]: Initialization of bean failed; nested exception is org.springframework.beans.TypeMismatchException: Failed to convert property value of type [freemarker.template.Configuration] to required type [org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean] for property 'fmConfig'; nested exception is java.lang.IllegalArgumentException: Cannot convert value of type [freemarker.template.Configuration] to required type [org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean] for property 'fmConfig': no matching editors or conversion strategy found
我可以有一个解决方案吗?谢谢。
【问题讨论】:
FreeMarkerTemplateUtils
在 spring 3.2.3 中似乎不起作用。
【参考方案1】:
工厂 bean 应该返回配置类型的东西。所以 setter 应该接受那个类型。
private Configuration fmConfig_;
public void setFmConfig(Configuration fmConfig)
fmConfig_ = fmConfig;
以前,我使用的是 FreeMarkerConfigurationFactoryBean 而不是 Configuration,这是错误的。
【讨论】:
那么你自己的问题回答了吗?以上是关于使用 Spring 从 freemarker 获取模板的主要内容,如果未能解决你的问题,请参考以下文章
在 Spring 应用程序中从 FreeMarker 获取模板文本
如何在spring中的freemarker模板中获取请求上下文
Spring boot Freemarker 获取ContextPath的方法
Spring Boot:Spring Boot整合FreeMarker