关于velocity tool2.0+springMVC的配置
Posted roychenyi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于velocity tool2.0+springMVC的配置相关的知识,希望对你有一定的参考价值。
1、 layout 的配置
在spring的配置文件中,先配置对于vm文件的解析
如下
</pre><p></p><p align="left"><pre name="code" class="html"><bean id="viewResolver"class="org.springframework.web.servlet.view.velocity.VelocityLayoutViewResolver">
<!-- view解析器需要使用需要使用org.springframework.web.servlet.view.velocity.VelocityLayoutViewResolver
当不需要使用layout布局时,使用org.springframework.web.servlet.view.velocity.VelocityViewResolver
-->
<property name="viewClass" value="com.cy.wxs.velocity.VelocityToolbox2View"/>
<!-- <property name="viewClass"value="org.springframework.web.servlet.view.velocity.VelocityLayoutView"/>
-->
<property name="cache" value="true"/>
<property name="prefix" value=""/>
<property name="suffix" value=".vm"/>
<property name="contentType" value="text/html;charset=utf-8" />
<property name="layoutUrl" value="/layout/layout.vm"/>
<property name="requestContextAttribute" value="ac" />
<property name="order" value="1"/>
<property name="numberToolAttribute" value="numbertool" />
<property name="dateToolAttribute" value="datetool" />
<property name="toolboxConfigLocation"value="WEB-INF/vm/conf/velocity-toolbox.xml"/>
</bean>
然后添加velocityConfig配置,如下:
<bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
<property name="resourceLoaderPath" value="/WEB-INF/vm/"/>
<!-- <propertyname="configLocation" value="/WEB-INF/vm/conf/velocity.properties"/>-->
<property name="velocityProperties">
<props>
<prop key="input.encoding">UTF-8</prop>
<prop key="output.encoding">UTF-8</prop>
<!-- <prop key="contentType">text/html;charset=UTF-8</prop>-->
<prop key="velocimacro.library">conf/VM_global_library.vm,conf/VM_wml_library.vm,conf/VM_wxs_library.vm</prop>
</props>
</property>
</bean>
如上:layoutUrl配置默认模板的路径,路径= resourceLoaderPath+ layoutUrl即可以得到布局文件的绝对路径
如此layout即配置成功,如果在实际的工程中,需要切换到其他的布局文件,即可在对应的vm文件中的开始添加#set($layout="layout/layout.vm"),配置文件的实际路径,为 resourceLoaderPath加layout。
2、添加宏文件的问题,可以在velocityConfig中添加 <prop key="velocimacro.library">conf/VM_global_library.vm,conf/VM_wml_library.vm,conf/VM_wxs_library.vm</prop>
(value为字符串数组,用(,)隔开即可配置多个宏文件)
3、配置velocity-tool
在实际使用中,需要配置一些velocity-tool
在spring对最新的velocity tool2.0 的支持不是太好,所以需要扩展viewClass类,才能读取velocitytool.Xml文件。
在没有使用layout的velocity中,需要可以直接继承VelocityToolboxView类,然后重写createVelocityContext方法,但是在VelocityLayoutViewResolver中却无法加载继承VelocityToolboxView的类,而是需要继承VelocityLayoutView,去查找源文件的类,发现VelocityLayoutView继承一样VelocityToolboxView类,所以直接继承VelocityLayoutView然后重写createVelocityContext方法,如下:
package com.cy.wxs.velocity;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.velocity.context.Context;
import org.apache.velocity.tools.Scope;
import org.apache.velocity.tools.ToolManager;
import org.apache.velocity.tools.view.ViewToolContext;
import org.springframework.web.servlet.view.velocity.VelocityLayoutView;
public classVelocityToolbox2View extends VelocityLayoutView
@Override
protected ContextcreateVelocityContext(Map<String, Object> model,
HttpServletRequest request,HttpServletResponse response)
throws Exception // Create a
// ChainedContext
// instance.
ViewToolContext ctx;
ctx = new ViewToolContext(getVelocityEngine(),request, response,
getServletContext());
ctx.putAll(model);
if (this.getToolboxConfigLocation() != null)
ToolManager tm = new ToolManager();
tm.setVelocityEngine(getVelocityEngine());
tm.configure(getServletContext().getRealPath(
getToolboxConfigLocation()));
if (tm.getToolboxFactory().hasTools(Scope.REQUEST))
ctx.addToolbox(tm.getToolboxFactory().createToolbox(
Scope.REQUEST));
if (tm.getToolboxFactory().hasTools(Scope.APPLICATION))
ctx.addToolbox(tm.getToolboxFactory().createToolbox(
Scope.APPLICATION));
if (tm.getToolboxFactory().hasTools(Scope.SESSION))
ctx.addToolbox(tm.getToolboxFactory().createToolbox(
Scope.SESSION));
return ctx;
4、关于velocity tool2.0
Velocity的配置文件较与之前的配置的版本,在配置上有一些改变,具体的配置方法在velocity-tool2.0.jar包的位置:org.apache.velocity.tools.generic中
以上是关于关于velocity tool2.0+springMVC的配置的主要内容,如果未能解决你的问题,请参考以下文章