0

私は次のスレッドを調べることから始めました-

Spring アプリで FreeMarker からテンプレート テキストを取得する

私の春の構成 -

<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

解決策はありますか?ありがとう。

4

1 に答える 1

2

ファクトリ Bean は、タイプ Configuration の何かを返すことになっています。したがって、セッターはその型を受け入れる必要があります。

private Configuration fmConfig_;

public void setFmConfig(Configuration fmConfig) {
        fmConfig_ = fmConfig;
    }

以前は、Configuration の代わりに FreeMarkerConfigurationFactoryBean を使用していましたが、これは間違っていました。

于 2010-02-18T11:51:34.343 に答える