2012-06-06 40 views
0

我們在我們的應用程序中使用spring,velocity爲電子郵件代碼片段,並且我得到了異常。任何想法來解決這個問題。加載applicatonContext時彈簧速度異常

"org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type 'org.springframework.ui.velocity.VelocityEngineFactoryBean' to required type 
'org.apache.velocity.app.VelocityEngine' for property 'velocityEngine'; nested exception is java.lang.IllegalStateException: Cannot convert value of type 
[org.springframework.ui.velocity.VelocityEngineFactoryBean] to required type [org.apache.velocity.app.VelocityEngine] for property 'velocityEngine': no matching editors or conversion strategy found " 

以下是我的上下文配置。

http://www.springframework.org/schema/beans/spring-beans.xsd「>

<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> 
    <property name="host" value="xxxx.US"/> 
    <property name="port" value="25"/> 
    <property name="javaMailProperties"> 
     <props> 
      <prop key="mail.transport.protocol">smtp</prop> 
      <prop key="mail.smtp.auth">false</prop> 
      <prop key="mail.smtp.starttls.enable">false</prop> 
      <prop key="mail.debug">true</prop> 
     </props> 
    </property> 
</bean> 

<bean id="velocityEngine" class="org.springframework.ui.velocity.VelocityEngineFactoryBean"> 
    <property name="velocityProperties"> 
     <value> 
      resource.loader=class 
      class.resource.loader.class=org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader  
     </value> 
    </property> 
</bean> 

<bean id="emailUtil" class="com.example.MailUtil"> 
    <property name="mailSender" ref="mailSender" /> 
    <property name="velocityEngine" ref="velocityEngine" /> 
</bean> 

回答

0

你並不需要引用velocityEngine在emailUtil豆。一切關於你的Spring配置是正確的。

我抓住下面的代碼從我的應用程序向您展示我們如何能夠使用Velocity模板。

private String generateMessageFromTemplate(User user, VelocityTemplateEnum velocityTemplateEnum) { 
    VelocityContext context = new VelocityContext(); 
    context.put("user", user); 
    StringWriter stringWriter = new StringWriter(); 
    String template = velocityTemplateDao.findById(velocityTemplateEnum.name()).getTemplate(); 
    Velocity.evaluate(context, stringWriter, velocityTemplateEnum.name(), template); 
    return stringWriter.getBuffer().toString(); 
} 
0

我有一個類似的設置只有我自動裝配在VelocityEngine而這爲我工作。自動裝配你的選擇?另外,你可以爲你的MailUtil類添加代碼嗎?也許velocityEngine字段/ setter不是100%正確的?