在Spring MVC中加载Velocity模板时出错(org.apache.Velocity.exception.Re



我正在获取org.apache.velocity.exception.ResourceNotFoundException:找不到资源错误。有人能帮我解决这个问题吗。我在下面附上了我的代码。如有任何帮助,我们将不胜感激。非常感谢。

我将.vm放在类路径src文件夹中。

Controller look like

@RequestMapping("/velocity") public String velocity(final HttpServletRequest request, final HttpServletResponse response) { final VelocityEngine ve = new VelocityEngine(); ve.setProperty("resource.loader", "class"); ve.setProperty("class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader"); ve.init(); /* next, get the Template */ final Template t = ve.getTemplate("index.vm"); /* create a context and add data */ final VelocityContext context = new VelocityContext(); context.put("members", "sharat"); /* now render the template into a StringWriter */ final StringWriter writer = new StringWriter(); t.merge(context, writer); final String Html = writer.toString(); return Html; }

spring-servlet.xml

<bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
<property name="resourceLoaderPath" value="/" />
</bean>
<bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
<property name="cache" value="true"/>
<property name="prefix" value=""/>
<property name="suffix" value=".vm"/>
</bean>

错误:

org.apache.velocity.exception.ResourceNotFoundException: Unable to find resource 'index.vm'
org.apache.velocity.runtime.resource.ResourceManagerImpl.loadResource(ResourceManagerImpl.java:474)
org.apache.velocity.runtime.resource.ResourceManagerImpl.getResource(ResourceManagerImpl.java:352)
org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:1533)
org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:1514)
org.apache.velocity.app.VelocityEngine.getTemplate(VelocityEngine.java:373)

velocity.properties

resource.loader = class file.resource.loader.description = Velocity File Resource Loader file.resource.loader.class = org.apache.velocity.runtime.resource.loader.FileResourceLoader file.resource.loader.path = vm file.resource.loader.cache = false file.resource.loader.modificationCheckInterval = 0

您需要更换

resource.loader =  class

带有

resource.loader =  file

此外,如果您在Web应用程序中,您应该检查Velocity Tools子项目中的WebappResourceLoader,这将帮助您指定相对于Web应用程序根的路径。您可以很容易地在网上找到如何使用Velocity Tools配置Spring。

否则,您必须为file.resource.loader.path属性指定一个绝对路径,或者确保Web应用程序容器的当前执行路径包含一个包含模板的vm目录。

最新更新