0

我们在我们的应用程序中使用 spring,velocity 作为电子邮件代码,我得到了以下异常。任何想法来解决这个问题。

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

4

2 回答 2

0

您不需要在 emailUtil bean 中引用velocityEngine。关于您的弹簧配置的其他所有内容都是正确的。

我从我的应用程序中获取了以下代码,向您展示我们如何能够使用速度模板。

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();
}
于 2012-06-06T19:39:02.297 回答
0

我有一个类似的设置,只是我在 VelocityEngine 中自动装配,这对我有用。自动装配是您的选择吗?另外,你可以为你的 MailUtil 类添加代码吗?速度引擎字段/设置器可能不是 100% 正确的?

于 2012-06-07T01:11:53.877 回答