使用Velocity的tool出现的问题

开发使用的是SpringMVC+Velocity的架构,要使用Velocity的tools,在整合时代码如下:

<bean id="viewResolver"

class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">

<property name="cache" value="true" />

<property name="suffix" value=".vm" />

<property name="contentType">

<value>text/html;charset=UTF-8</value>

</property>

<property name="requestContextAttribute" value="rc" />

<property name="toolboxConfigLocation" value="velocity-toolbox.xml" />

<!-- 定义velocity DATE 格式化 -->

<property name="dateToolAttribute">

<value>dateTool</value>

</property>

</bean>

这个volocity-toolbox.xml配置文件是放在src下,也就是说在打成war包之后是放在WEB-INF/classes这个目录下,可是一直报错误如下:

Caused by: java.lang.NullPointerException

at org.springframework.web.servlet.view.velocity.VelocityToolboxView.createVelocityContext(VelocityToolboxView.java:111)

at org.springframework.web.servlet.view.velocity.VelocityView.renderMergedTemplateModel(VelocityView.java:287)

at org.springframework.web.servlet.view.AbstractTemplateView.renderMergedOutputModel(AbstractTemplateView.java:167)

at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:264)

at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1208)

at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:992)

at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:939)

at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)

at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:953)

... 23 more

网上也没有查到资料,于是调试了下源码发现在类org.apache.velocity.tools.view.servlet.ServletToolboxManager中读取这个文件使用servletContext.getResourceAsStream这个API来读取的,这样问题就清楚了,开始以为是用类加载器的方式读取的。具体servletContext.getResourceAsStream如何使用大家可以看其他资料,这里不再赘述。不过后来我回头看别人的配置文档时,的确发现他们在配置这个文件路径时使用的是项目的相对路径,于是我将这个路径改成:/WEB-INF/classes/velocity-toolbox.xml,问题解决!

时间: 2024-11-02 18:33:03

使用Velocity的tool出现的问题的相关文章

Velocity初探小结--Velocity在spring中的配置和使用

最近正在做的项目前端使用了Velocity进行View层的数据渲染,之前没有接触过,草草过了一遍,就上手开始写,现在又回头细致的看了一遍,做个笔记. velocity是一种基于java的模板引擎技术,有点类似与JSP,它允许页面设计者引用Java中定义的方法.前端页面设计者和后端Java开发者能够同时使用MVC的模式开发网站,这样前端能够把精力放在页面的设计上,后端也可以把精力放在代码开发上.Velocity把Java代码从Web页面中分离, 使网站可维护性更强. 注:项目使用的是Spring+

Maven项目管理:SpringMVC+Mybatis+Velocity整合笔记

Maven创建项目 略…具体过程可参考用Maven创建第一个web项目 配置Spring MVC 导入Spring MVC 需要的包在pom.xml 文件下加入: 123456789101112 <!-- spring mvc begin --><dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <v

《Velocity java开发指南》中文版(下)转载

文章出自:http://sakyone.iteye.com/blog/524292 8.Application Attributes Application Attributes (应用程序属性)是和VelocityEngine 的运行时实例(Runtimeinstance)相关联的,名-值对(name-value pairs)格式的参数,可用来存运RuntimeInstance时的信息. 设计这个功能的目标是Velocity程序需要与应用层或用户定制部分(如日志,资源,装载器等)通信. The

只需2分钟,简单构建velocity web项目

Velocity是一个基于java的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象 velocity的语法非常简单.这里不多介绍. 我们平时的web项目,通常的开发流程是前端写好静态页面.后端将静态页面改成jsp,在相应的需要替换数据的地方,使用 jstl.EL表达式等接收action模块传递过来的数据.一般使用action来处处理参数,调用service层来处理业务逻辑,service层调用da

velocity模板引擎学习(2)-velocity tools 2.0

使用velocity后,原来的很多标签无法使用了,必须借助velocity tools来完成,目前velocity tools最新版本是2.0,下面是velocity tools的一些注意事项: 1. 与Spring MVC 3.x/4.x的集成问题 Spring 3.x/4.x只支持1.3.x的velocity tools,要使用2.0必须自己扩展VelocityToolboxView类 1 package org.springframework.web.servlet.view.veloci

Velocity笔记--使用Velocity获取动态Web项目名的问题

以前使用jsp开发的时候,可以通过request很轻松的获取到根项目名,现在换到使用velocity渲染视图,因为已经不依赖servlet,request等一些类的环境,而Web项目的根项目名又不是写死的,需要动态获取,这时候该怎么办呢,试了网上说了很多种方式,总结一下心得. 第一种:(失败) 在toolbox.xml里配置以下信息: <toolbox scope="request">          <tool key="link" class

spring mvc 4 + velocity 以及自定义tools

最近的项目中用到了spring mvc 版本为 4.1.6.RELAESE 而velocity-tools也被我2B的升级成了 2.0了. ------------------------------ 其中mvc 3版本以上需要自定义 viewClass以完成 velocity tools的装载,不然报错 这一步,网上已经有人share出来方法了: <bean id="velocityViewResolver" class="org.springframework.we

velocity的string转数字,numberTool

velocity的string转数字,非常有意思: 1.通过java的包装类进行转换 #set($intString = "20") #set($Integer = 0) $Integer.parseInt($intString) #set($tring = "20") #set($Double = 0.0) $Double.parseDouble($string) 以上输出: 20 20.0 注意:velocity无法直接使用Integer(或Double),但是

springmvc velocity toolbox 配置

1.springmvc <!-- 设置视图解析工具 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.VelocityLayoutViewResolver"> <property name="suffix" value=".vm"/> <!-- 避免乱码 --> <