0

私たちのアプリケーションでは、電子メールのコードに春と速度を使用していますが、例外が発生しました。これを解決するための任意のアイデア。

 "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

VelocityEngine で自動配線するだけの同様のセットアップがあり、それは私のために働いています。自動配線はオプションですか?また、MailUtil クラスのコードを追加できますか? たぶん、velocityEngine フィールド/セッターで何かが 100% 正しくないのでしょうか?

于 2012-06-07T01:11:53.877 に答える
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 に答える