Spring + Velocity Webapp资源加载

时间:2013-04-28 18:25:03

标签: spring velocity

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

  1. 制作模板并将其添加到classpath
  2. 将模板放入WEB-INF / classes或WEB-INF / lib
  3. 我正在使用Spring 3.1.3和Tomcat 6.x。

    问题是很多人遇到的是“org.apache.velocity.exception.ResourceNotFoundException:无法找到资源'emailBody.vm'”问题。

    有人可以列出要在.xml和.java文件中使用的正确值,假设模板文件位于WEB-INF / templates文件夹中。对像我这样的新手开发者来说,这将是一个很好的帮助。这里有100多个qns,但它们指的是弹簧和速度的多个版本。

    我试过的一种方法是在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/");
    

0 个答案:

没有答案