springmvc+verlocity1.6+verlocity-tools2.0 无法使用tools

需要在VelocityViewResolver中增加viewClass配置


    <bean id="velocityViewResolver"
        class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
        <property name="viewClass" value="com.steno.hamsrz.utils.VelocityToolbox2View"/>
        <property name="cache" value="false" />
        <property name="order" value="1" />
        <property name="suffix" value=".vm" />
        <property name="toolboxConfigLocation" value="/WEB-INF/velocity/toolbox.xml" />
        <property name="requestContextAttribute" value="rc" />
        <property name="contentType">
            <value>text/html;charset=UTF-8</value>
        </property>
    </bean>

com.steno.hamsrz.utils.VelocityToolbox2View 代码

package com.steno.hamsrz.utils;

 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 VelocityToolbox2View extends VelocityToolboxView {
    @Override
     protected Context createVelocityContext(Map<String, Object> model,
             HttpServletRequest request, HttpServletResponse response)
             throws Exception {
      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;
     }
 }


toolbox.xml

.<tools>
    <toolbox scope="application">
        <tool class="com.steno.hamsrz.utils.ReferenceTool"/>
        <tool class="org.apache.velocity.tools.generic.FieldTool" include="com.steno.hamsrz.utils.RegexTool"/>
    </toolbox>
</tools>


ReferenceTool增加注解

@DefaultKey("reference")
@InvalidScope("{application}")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值