Получить шаблоны из freemarker с помощью Spring
Я начал с поиска в следующей теме -
Получение текста шаблона из приложения FreeMarker в 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
Могу ли я найти решение? Благодарю.
1 ответ
Предполагается, что фабричный бин должен возвращать что-то типа Configuration. Поэтому установщик должен принять этот тип.
private Configuration fmConfig_;
public void setFmConfig(Configuration fmConfig) {
fmConfig_ = fmConfig;
}
Ранее я использовал FreeMarkerConfigurationFactoryBean вместо конфигурации, которая была неправильной.