1.viewResolver配置中的:

<bean id="viewResolver"
class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
<property name="suffix" value=".vm" />
<property name="exposeRequestAttributes" value="true" />
<property name="requestContextAttribute" value="request" />
<property name="exposeSpringMacroHelpers" value="true"/>
<property name="exposeSessionAttributes" value="true" />
<property name="contentType" value="text/html;charset=UTF-8" />
<property name="toolboxConfigLocation" value="WEB-INF/toolbox.xml"/>
<property name="viewClass" value="cn.com.ksplatform.core.expand.spring.velocity.VelocityToolbox20View"/>
</bean>

VelocityToolbox20View代码如下:

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;
}
}

  

标红部分的作用是:说白了就是velocity在模板解析过程中想使用tool.xml文件中配置的类

3、配置velocity-tool

在实际使用中,需要配置一些velocity-tool

在spring对最新的velocity tool2.0 的支持不是太好,所以需要扩展viewClass类,才能读取velocitytool.Xml文件。

在没有使用layout的velocity中,需要可以直接继承VelocityToolboxView类,然后重写createVelocityContext方法,但是在VelocityLayoutViewResolver中却无法加载继承VelocityToolboxView的类,而是需要继承VelocityLayoutView,去查找源文件的类,发现VelocityLayoutView继承一样VelocityToolboxView类,所以直接继承VelocityLayoutView然后重写createVelocityContext方法,如下:

  1. package com.cy.wxs.velocity;
  2. import java.util.Map;
  3. import javax.servlet.http.HttpServletRequest;
  4. import javax.servlet.http.HttpServletResponse;
  5. import org.apache.velocity.context.Context;
  6. import org.apache.velocity.tools.Scope;
  7. import org.apache.velocity.tools.ToolManager;
  8. import org.apache.velocity.tools.view.ViewToolContext;
  9. import org.springframework.web.servlet.view.velocity.VelocityLayoutView;
  10. public classVelocityToolbox2View extends VelocityLayoutView{
  11. @Override
  12. protected ContextcreateVelocityContext(Map<String, Object> model,
  13. HttpServletRequest request,HttpServletResponse response)
  14. throws Exception {// Create a
  15. // ChainedContext
  16. // instance.
  17. ViewToolContext ctx;
  18. ctx = new ViewToolContext(getVelocityEngine(),request, response,
  19. getServletContext());
  20. ctx.putAll(model);
  21. if (this.getToolboxConfigLocation() != null) {
  22. ToolManager tm = new ToolManager();
  23. tm.setVelocityEngine(getVelocityEngine());
  24. tm.configure(getServletContext().getRealPath(
  25. getToolboxConfigLocation()));
  26. if (tm.getToolboxFactory().hasTools(Scope.REQUEST)) {
  27. ctx.addToolbox(tm.getToolboxFactory().createToolbox(
  28. Scope.REQUEST));
  29. }
  30. if (tm.getToolboxFactory().hasTools(Scope.APPLICATION)) {
  31. ctx.addToolbox(tm.getToolboxFactory().createToolbox(
  32. Scope.APPLICATION));
  33. }
  34. if (tm.getToolboxFactory().hasTools(Scope.SESSION)) {
  35. ctx.addToolbox(tm.getToolboxFactory().createToolbox(
  36. Scope.SESSION));
  37. }
  38. }
  39. return ctx;
  40. }
  41. }

4、关于velocity tool2.0

Velocity的配置文件较与之前的配置的版本,在配置上有一些改变,具体的配置方法在velocity-tool2.0.jar包的位置:org.apache.velocity.tools.generic中

ksplatform学习笔记的更多相关文章

  1. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  2. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  3. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  4. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

  5. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  6. seaJs学习笔记2 – seaJs组建库的使用

    原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...

  7. CSS学习笔记

    CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...

  8. HTML学习笔记

    HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...

  9. DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记

    今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...

随机推荐

  1. 脱离SVN的控制

    在桌面创建一个记事本文件,然后吧这句话复制进去for /r . %%a in (.) do @if exist "%%a\.svn" rd /s /q "%%a\.svn ...

  2. SpringBoot yml properties文件

    一.在SpringBoot实现属性注入: 1).添加pom依赖jar包: 1 <!-- 支持 @ConfigurationProperties 注解 --> 2 <!-- https ...

  3. 参考 - spring boot 静态变量注入值

    参考http://blog.csdn.net/zhayuyao/article/details/78553417 @Component public class A { private static ...

  4. php去除bom

    <?php /*检测并清除BOM*/ if(isset($_GET['dir'])){ $basedir=$_GET['dir']; }else{ $basedir = '.'; } $auto ...

  5. 安装tftp服务器进行文件传输

    1. 安装: sudo apt-get install tftp-hpa tftpd-hpa ps: tftpd是服务器,tftp是客户端,客户端能发送和获取,服务器不能动. 2. 配置文件: sud ...

  6. spring-boot基础概念与简单应用

    1.spring家族 2.应用开发模式 2.1单体式应用 2.2微服务架构 微服务架构中每个服务都可以有自己的数据库  3.微服务架构应当注意的细节 3.1关于"持续集成,持续交付,持续部署 ...

  7. yii的layouts的使用

    yii的layouts的使用 我们在控制器中使用render()时,yii会默认的载入布局. 1.在protected/componets下的Controller.php中修改$layout变量, 来 ...

  8. phalcon框架安装

    Phalcon学习笔记 - 安装 原创 2014年10月23日 12:20:33 标签: phalcon / phalcon安装 5014 如何学习一个新的框架 1  明白工作原理 2  知道核心思想 ...

  9. BZOJ 1345[BOI]序列问题 - 贪心 + 单调栈

    题解 真的没有想到是单调栈啊. 回想起被单调栈支配的恐惧 最优情况一定是小的数去合并 尽量多的数,所以可以维护一个递减的单调栈. 如果加入的数比栈首小, 就直接推入栈. 如果加入的数大于等于栈首, 必 ...

  10. Ubuntu下安装VirtualBox并为其添加USB支持

    1.下载VirtualBox软件包和USB支持包 下载网址均为官方网站(可在此查看其使用教程):https://www.virtualbox.org/wiki/Downloads (若下载各平台各版本 ...