0

这是一个真正的痛苦。我正在尝试将 Spring 配置为对我们要发送的电子邮件使用 Velocity 模板。在我的情况下,以下是不可接受的。

  1. 将模板罐起来并将其添加到类路径中
  2. 将模板放入 WEB-INF/classes 或 WEB-INF/lib

我正在使用 Spring 3.1.3 和 Tomcat 6.x。

问题是许多人都遇到过“org.apache.velocity.exception.ResourceNotFoundException: Unable to find resource 'emailBody.vm'”问题。

假设模板文件位于 WEB-INF/templates 文件夹中,有人能否列出要在 .xml 和 .java 文件中使用的正确值。对于像我这样的 Spring 新手开发者来说,这将是一个很大的帮助。这上面有 100 个 qns,但它们指的是 spring 和 velocity 的多个版本。

我尝试的一种方法是在 dispatcher.xml 中添加一个 bean,如下所示,并在 java 文件中引用它。

< bean id="velocityEngine"   class="org.springframework.ui.velocity.VelocityEngineFactoryBean" >
            < property name="velocityProperties">
                < props>
                    < prop key="resource.loader">webapp</prop>
                    < prop key="webapp.resource.loader.class">org.apache.velocity.tools.view.WebappResourceLoader</prop>                
                    < prop key="webapp.resource.loader.path">/WEB-INF/templates/</prop>
                < /props>
            < /property>
< /bean>        

Java代码如下

String body = VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, "emailBody.vm", map);

我也尝试以编程方式进行,

   velocityEngine.addProperty("resource.loader", "url");
   velocityEngine.setProperty("url.resource.loader.class", "org.apache.velocity.runtime.resource.loader.URLResourceLoader");
   velocityEngine.setProperty("url.resource.loader.root", "/WEB-INF/templates/");
4

0 回答 0