我正在获取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
目录。