如何在java类中使用Velocity模板

时间:2014-03-12 21:57:59

标签: java velocity filenotfoundexception

我试图在java类中使用速度模板,下面是我的代码

 VelocityEngine ve = new VelocityEngine();
 ve.init();
 VelocityContext context = new VelocityContext();       
 context.put("object", someobject);
 Template t = ve.getTemplate("template.vm");
 StringWriter writer = new StringWriter();
 t.merge(context, writer);

代码抛出在行

处找不到的资源
  

ve.getTemplate(" template.vm&#34)

无论我如何给出它没有采取的路径。

该模板的路径应该是什么.vm

它不在web-inf文件夹内,而是在web目录中。

我发现问题是没有正确设置的属性

Properties velocityProperties = new Properties();
velocityProperties.put("resource.loader", "class");
velocityProperties.put("class.resource.loader.description", "Velocity Classpath Resource Loader");
velocityProperties.put("class.resource.loader.class",
                "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
            velocityProperties.put("file.resource.loader.class","org.apache.velocity.runtime.resource.loader.FileResourceLoader");
velocityProperties.put("file.resource.loader.path","/");
velocityProperties.put("file.resource.loader.cache","false");

ve.init(velocityProperties

一旦我把它拿起我的模板。

);

1 个答案:

答案 0 :(得分:0)

在app conf xml中,您必须指定bean和模板所在的位置,以及模板的扩展名。就我而言:

<bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
    <property name="resourceLoaderPath" value="/WEB-INF/views/" />
</bean>

<!-- View resolvers can also be configured with ResourceBundles or XML files.
    If you need different view resolving based on Locale, you have to use the
    resource bundle resolver. -->
<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" />
    <property name="toolboxConfigLocation" value="/WEB-INF/velocity-toolbox.xml" />
</bean>
相关问题