【问题标题】:Velocity can't find resource with webAppVelocity 无法使用 webApp 找到资源
【发布时间】:2010-10-31 21:42:43
【问题描述】:

我正在尝试使用 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.propeties:

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

小服务程序:

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

我正在使用 NetBeans IDE,并且我的 temp.vm 文件位于 /WEB-INF/templates/ 中。一定是我缺少的东西,但我就是不知道它是什么。

感谢您的帮助!

【问题讨论】:

    标签: java velocity


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      希望对你有帮助:)

      问候, 亚历克斯

      【讨论】:

        【解决方案3】:

        把模板放到/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>  
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-11-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多