我试图在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
一旦我把它拿起我的模板。
);
答案 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>