spring 3.0.5+velocity tools 2.0

spring 3.0.5 的org.springframework.web.servlet.view.velocity.VelocityToolboxView 类只支持1.X的velocitytools,如果想让spring支持新版本的tools,只要重写org.springframework.web.servlet.view.velocity.VelocityToolboxView这个类的createVelocityContext方法,然后在配置文件里指定使用新的viewClass。

package com.rsoft.spring.controller;

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.VelocityToolboxView;

public class VelocityToolbox20View extends VelocityToolboxView {
    @Override
    
protected Context createVelocityContext(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;
    }
}

相关视图配置

<bean id="velocityViewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
        
<property name="order" value="0"/>
        
<property name="cache" value="true" />
        
<property name="prefix" value="" />
        
<property name="suffix" value=".html" />
        
<property name="toolboxConfigLocation" value="/WEB-INF/tools.xml"/>
        
<property name="viewClass" value="com.rsoft.spring.controller.VelocityToolbox20View"/>
        
<property name="contentType">
            
<value>text/html;charset=UTF-8</value>
        
</property>

    </bean> 

posted @ 2011-06-15 17:41  八爻老骥  阅读(3841)  评论(1编辑  收藏  举报