Velocity无法使用webApp查找资源

时间:2010-10-31 21:42:43

标签: java velocity

我正在尝试使用GlashFish服务器和Velocity创建一个webApp。

但我收到以下错误:

    SEVERE: ResourceManager : unable to find resource 'temp.vm' in any resource loader.
SEVERE: org.apache.velocity.exception.ResourceNotFoundException: Unable to find resource 'temp.vm'

velocity.proprieties:

resource.loader=webapp
webapp.resource.loader.class=org.apache.velocity.tools.view.WebappResourceLoader
webapp.resource.loader.path=/WEB-INF/templates/

的Servlet

 ve.setApplicationAttribute("javax.servlet.ServletContext", context);
            template = ve.getTemplate("temp.vm");

我正在使用NetBeans IDE,而我的temp.vm文件位于/ WEB-INF / templates /中。必须是我缺少的东西,但我无法得到它是什么。

感谢您的帮助!

3 个答案:

答案 0 :(得分:3)

另一种选择可能是使用类路径资源加载器并将.vm文件放在/WEB-INF/classes中。

答案 1 :(得分:2)

我刚问了一个类似的问题:

How to load a velocity template into an EJB to be used as a mail template

我使用了ClasspathResourceLoader并创建了一个包含模板的.jar。将.jar放入WEB-INF / lib文件夹中它应该可以工作(至少我可以管理以这种方式运行)。

希望有所帮助:)

此致 亚历

答案 2 :(得分:2)

将模板放在/WEB-INF/classes/template/temp.vm目录中并使用ve.getTemplate(“template / temp.vm”);

确保将资源加载程序配置为ClasspathResourceLoader。

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