spring 3+velocity tools 2.0

来源:互联网 发布:mac os 软件下载 编辑:程序博客网 时间:2024/06/05 14:38

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> 
复制代码


0 0
原创粉丝点击