velocity toolsTools中tools.xml和toolbox.xml的区别

springmvc+velocity 在vm模板上添加通用工具类对象变量 - 责任能将能力发挥到极致 - ITeye技术网站
博客分类:
在平时工作的项目中经常会在vm模板中添加自定义的工具类,由于上班时用的是sofa框架,里面的配置跟spring还是有区别的,以前自己也没有做过,今天就尝试了一下,主要配置如下:
&!-- 让Spring启用对annotation的支持 --&
&context:annotation-config&&/context:annotation-config&
&!-- 自动扫描org.yonge路径下的所有文件,并根据注解完成注入的工作 --&
&context:component-scan base-package="com.yonge"&&/context:component-scan&
&!-- 配置velocity引擎 --&
&bean id="velocityConfigurer"
class="org.springframework.web.servlet.view.velocity.VelocityConfigurer"&
&property name="resourceLoaderPath" value="/" /&&!-- 模板存放的路径 --&
&property name="velocityProperties"&
&prop key="input.encoding"&gbk&/prop&
&prop key="output.encoding"&gbk&/prop&
&/property&
&!-- 配置视图的显示 --&
&bean id="ViewResolver"
class="org.springframework.web.servlet.view.velocity.VelocityViewResolver"&
&property name="prefix" value="/" /&&!-- 视图文件的前缀,即存放的路径 --&
&property name="suffix" value=".vm" /&&!-- 视图文件的后缀名 --&
&property name="exposeRequestAttributes" value="true" /&&!-- 暴露request属性 --&
&property name="toolboxConfigLocation" value="/WEB-INF/velocity/tools.xml" /&&!-- 配置工具类 --&
&!-- VelocityToolboxView 类只支持1.X的velocitytools --&
&!--&property name="viewClass"
value="org.springframework.web.servlet.view.velocity.VelocityToolboxView" /& --&
&property name="viewClass"
value="com.yonge.web.velocity.VelocityToolbox20View" /&
&!-- &property name="viewClass"
value="org.springframework.web.servlet.view.velocity.VelocityView" /& --&
&!-- 将自定义工具类 注入到VelocityContext中--&
&!-- &bean name="velocityView"
class="org.springframework.web.servlet.view.velocity.VelocityView"&
&property name="toolAttributes"&
&entry key="dateUtil" value="com.yonge.web.util.DateUtil" /&
&/property&
&property name="url" value="/" /&
&/bean& --&
上面的配置文件中,VelocityToolbox20View是重写的一个类,是在网上copy的,如下:
public class VelocityToolbox20View extends VelocityToolboxView {
protected Context createVelocityContext(Map&String, Object& model,
HttpServletRequest request, HttpServletResponse response)
throws Exception {// Create a
// ChainedContext
// instance.
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));
velocityTool的配置文件:
&?xml version="1.0" encoding="UTF-8"?&
&data type="boolean" key="xhtml" value="true"/&
&data type="boolean" key="isSimple" value="true"/&
&data type="number" key="version" value="2.0"/&
&data key="foo"&this is foo&/data&
&data key="bar"&this is bar.&/data&
&toolbox scope="request"&
&!-- &tool key="toytool" class="ToyTool" restrictTo="index*"/& --&
&/toolbox&
&toolbox scope="session"&
&!-- &tool key="map" class="java.util.HashMap"/& --&
&/toolbox&
&toolbox scope="application"&
&!-- &tool key="map" class="java.util.HashMap"/& --&
&tool key="dateUtil" class="com.yonge.web.util.DateUtil"/&
&/toolbox&
用velocityTool很好的解决了添加自定义工具类的问题,但是我最开始的时候是想通过另一种VelocityView解决这个问题,向velocityView中注入toolAttributes属性(如上面的配置文件),该属性的类型是一个Map&String, Class&,key是vm模板上使用的变量名,value是对应自定义的工具类,它也会将toolAttributes属性添加到velocityContext中,但是我却遇到了velocityView不能注入viewClass的问题,因为velocityView是一个实例对象,而viewClass是一个class类型的,导致类型转换错误,希望知道的兄弟们回复一下,thx!!!
可以自定义VelocityContext
我的第二种方法就是向VelocityContext中插入自定义的对象,但是不知道怎么注入,你知道吗?
浏览: 117841 次
来自: 杭州
请问你一下,你知道如何使用gradle来获取git版本号吗
如果 还有其他参数该怎么办呢
哥们你们解决了吗?这个问题折腾我很久了
我也想问啊,
如果com.yonge.web.util.Dat ...当前访客身份:游客 [
当前位置:
对应的servlet继承自VelocityLayoutServlet @Override
protected Template handleReques...
VelocityTools中tools.xml和toolbox.xml的区别?
如果是Web项目,加载的模板在WEB-INF下,又该如何获取模板呢?请教?
velocity 输出 数据库 datetime 类型的字段值时 带点零 的问题 怎么解决。 这是 数据库 字段 : 里面的实际值 没有 带点的 : 新手...
velocity-1.7-dep.jar 和 velocity-1.7.jar 两个包的区别是什么啊。
还有个 velocitytool 是干什么的。
这个异常是什么...根本就没有用struts 就只是跑通一个demo 直接用velocity-tools包里面的example中的showcase放在to...
最近试着做一个oa练手,MVC用的SpringMVC+freemarker,但freemarker在项目中只起到通过标签显示数据的作用。 这种情况下是不是...
Velocity 模板有人用吗?请教一个问题? 转义符号 \ 是任何地方都将 \\作为\显示,还是只是在# $前面才做此处理? 特殊字符转义 对于$、#等...
我准备用velocity开发一个网站。框架采用struts+velocity+ibatis+spring
不过,velocity听说跟JSP是...
我的velocityEngine的创建方式是: VelocityEngine velocityEngine = new VelocityEngine("v...
新手初学velocity。 在一个dynamic web application把velocity给整了进去,P.S. MVC框架是用的Nutz。 我想在...
昨天部署JFinal做的项目到windows2003的jsp虚拟主机上报错了,用的velocity视图,在本地和linux环境下没遇到这个问题哦。求大神看...
想在jquery中写velocity,总是报不识别的语法错误,请问是什么原因 &script type="text/javascript"&
生成word时候,打开 图片能正常显示,copy到另外一个电脑时候 打开 无法正常显示了。究竟是什么原因转移了环境就不能够正常显示。QQ...
在项目中设置session 如何在模板中获取 $!session.getAttribute("user").name 无法获取 在模板配置velocity...
struts2集成velocity模版,不能使用tools.xml中配置的工具变量。以下是我的详细配置: struts.xml &?xml vers...
从数据库读出来的数据渲染到velocity里面中文显示正常,但是我直接velocity模板页面数据中文,显示就是乱码 下面是我的配置 下面是我的模板文件 ...
单独用main方法测试放在src/template下可以用ve.getTemplate(".src/template/index.vm");获取模板,但是...
@红薯 你好,想跟你请教个问题:看了你写的文章OSChina 的 URL 设计和详细的实现有个地方不太明白,访问资讯页面的地址是http://www.os...
velocity 模板发送邮件用的比较多了,现在要发送的内容也不仅仅局限于简单的文本,在最近的项目中遇到,要携带一张 项目中的图片,发送给客户,写相对路径...
我想提前定制好若干套页面模板(如不同用户的主页不同),那么模板引擎能够做些什么呢? 看来看去,也就觉得他是传值工具而已。
@VincentJiang 你好,想跟你请教个问题:我用创建了一个java web 命名为velocityTest2, 然后在webRoot目录下创建了一...
@VincentJiang 你好,想跟你请教个问题:根据我现在的理解,velocity主要是对前端进行开发,那么它如何与后端进行交互呢,比如数据库,你有实...
整个例子用的是velocity+servlet
velocity的属性文件如下配置 input.encoding=UTF-8
output.encodi...
配置信息如下: &bean id="viewResolver" class="org.springframework.web.servlet.vie...
求救呀,针对像 List 和 实体对象 如何处理呀 我测试过的方法 只针对比如一个字段可以操作 (像List 就无法处理了 ) 前台数据显示时 要转义的数...
我再web.xml中添加了 &init-param&
&param-name&org.apache.velocity.prop...
路过的大大给说说:Struts2是如何初始化VelocityManager? 看struts2源码:struts-default.xml &bean...
刚刚使用velocity就遇到了一系列错误,现在想弄一个用其解析vm文件的简单web实例,可是却遇到了下面的错误 这是我在xml中的配置 &serv...
本人有一点java基础,有一点web开发经验,现在要用java开发一个后台管理系统,以下是菜鸟遇到的问题,希望各位能指点下: 1.关于表现层只用Veloc...
这是在*-servlet.xml中的velocity的配置: &!-- velocity配置 --&
&bean id="veloci...
有没有专门教授学习velocity的书籍啊? 多谢各位的帮助!正在做struts2与velocity的整合,在网上查了好久,实验了很多次都不成功,所以想找...
用Velocity很久了,喜欢简洁的语法,主要用来生成静态页面,但是一个问题困扰了很久,希望各位高手帮帮忙。 测试代码: #foreach ($colum...
我在vm页面上想要对两个数字相加减 #set($a=$!objInfo.newNumber) #set($b=$!objInfo.oldNumber) $...
ToyTool.java 类 public class ToyTool {
private String message = "Hello from ...
velocity.properties如下: input.encoding = UTF-8 output.encoding = UTF-8 resourc...
使用红薯大大的开源的部分代码整合了一个小项目。 在重定向时明明转发到pro.vm上了。但是居然报layout/1找不到 如: http://localho...
   本人最近在做J2EE项目优化。之前发现首页打开速度很慢,用firedebug查看了一下,原来JS和图片的http请求都很多。目前,拟定的优化方案是:...
我想实现从浏览器上传文件到服务器端的功能,页面代码如下: &body&
&form action="" method="post" e...
请前辈们 帮讲解以下FreeMarker, JSP, velocity的区别与联系。以及他们各自不同的优缺点和使用场景。
找不到我想要的答案?随笔 - 91&
文章 - 1&评论 - 2&trackbacks - 0
我的博客:
以下是我第一次使用velocity的时候写的
话说struts真够懒的,都把velocity-1.6.4.jar放到他自己的lib里边了,就不给放全了,搞得新手太郁闷了。struts2想要用velocity模板需要如下几个包:
velocity-1.7.jarvelocity-tools-2.0.jarcommons-collections-3.2.jar
然后只需要在web.xml中配置result type=velocity就可以了。
另外eclipse如果做web项目,必须把jar包引入到WEBINF目录下,如果是使用userlibraries的话,webapp容器无法识别.classpath文件中指定的classpath从而导致类未找见的异常。
以下是参加工作后发现的问题:
在实际工作中,发现不能在vm模板中使用tools.xml配置文件中定义的工具类。查了很久才发现需要在struts.xml中定义两个常量,来帮助struts寻找到tools.xml和velocity.properties的位置
1 &?xml version="1.0" encoding="UTF-8"?&
2 &web-app id="WebApp_9" version="2.4" xmlns="/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="/xml/ns/j2ee /xml/ns/j2ee/web-app_2_4.xsd"&
&display-name&Struts Blank&/display-name&
&filter-name&struts2&/filter-name&
&filter-class&org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter&/filter-class&
&filter-mapping&
&filter-name&struts2&/filter-name&
&url-pattern&/*&/url-pattern&
&/filter-mapping&
&servlet-name&velocity&/servlet-name&
&servlet-class&org.apache.velocity.tools.view.VelocityViewServlet&/servlet-class&
&init-param&
&param-name&org.apache.velocity.toolbox&/param-name&
&param-value&/WEB-INF/tools.xml&/param-value&
&/init-param&
&init-param&
&param-name&org.apache.velocity.properties&/param-name&
&param-value&/WEB-INF/velocity.properties&/param-value&
&/init-param&
&/servlet&
&servlet-mapping&
&servlet-name&velocity&/servlet-name&
&url-pattern&*.vm&/url-pattern&
&/servlet-mapping&
&welcome-file-list&
&welcome-file&index.html&/welcome-file&
&/welcome-file-list&
37 &/web-app&
struts.xml
&?xml version="1.0" encoding="UTF-8" ?&
&!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd"&
&constant name="struts.velocity.toolboxlocation" value="WEB-INF/tools.xml" /&
&constant name="struts.velocity.configfile" value="WEB-INF/velocity.properties" /&
&constant name="struts.enable.DynamicMethodInvocation" value="false" /&
&constant name="struts.devMode" value="true" /&
&package name="default" namespace="/" extends="struts-default"&
&default-action-ref name="index" /&
&global-results&
&result name="error"&/error.jsp&/result&
&/global-results&
&global-exception-mappings&
&exception-mapping exception="java.lang.Exception" result="error"/&
&/global-exception-mappings&
&/package&
&include file="example.xml"/&
&!-- Add packages here --&
阅读(...) 评论()}

我要回帖

更多关于 toolbox.xml 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信