- 浏览: 315705 次
- 性别:
文章分类
最新评论
-
i042416:
分析在哪?
angular分析 -
何盆盆:
你好,请问您这是Extjs3还是Extjs4
ExtJs源码分析与学习—ExtJs事件机制(一) -
124753561:
引用引用引用引用引用[u][u][u][u][i][i][i] ...
Subvision SVN 服务端与客户端的安装 -
谷超:
请问一下例子中itext是什么版本的?
利用iText生成word文档例子参考 -
geosmart:
正好要用到执行字符串中方法,学习了
java中利用反射机制实现调用给定为字符串的方法名
1)嵌套vm,在vm中可使用#parse来嵌套另外一个vm,对应的在jsp方面就是嵌套jsp,但嵌套在内的jsp和外部的jsp无法共用变量,非常不方便,而velocity不存在这方面的问题,变量完全共享,如:
->a.vm 里嵌套 b.vm;
->a.vm 里定义了变量 $param;
->b.vm 里可以直接使用$param,无任何限制。
但需要特别注意的是,如果b.vm里同时定义有变量$param,则b.vm里将使用b.vm里定义的值;
2)内置对象
Velocity内置了一些对象,在vm模版里可以直接调用,列举如下:
$request、$response、$session,另外,模板内还可以使用 $msg内的消息工具访问 Struts 的国际化资源,达到简便实现国际化的方法。
例如,我们在toolbox.xml文件中配置了如下代码
<tool>
<key>msg</key>
<scope>request</scope>
<class>
org.apache.velocity.tools.struts.MessageTool
</class>
</tool>
并且我们有一个编译好了的文件:ApplicationResources_zh_CN.properties。它的内容如下:
name=六月天
在.vm文件中,就可以这样写:${msg.get("name")}
3)taglib的改造
taglib是Struts中一个重要的功能,但也有不足之处,后继参与开发和维护的人员不能很容易的掌握其作用,以及这些特殊的标签容易使页面的美工设计人员不容易处理等等。
如果原来View层编码规范,在jsp中出现的java代码比较少或者没有,则改造到Velocity也就比较容易。
替代taglib的方法很多,也很简便,比如Macro宏,类似JavaBean的使用方式等,而Dlog4J采用了综合的方法,具体说就是使用 ObjectTools extends VelocityTool,并在Velocity的配置文件velocity-toolbox.xml中配置好在模版上的变量名,进而所有的vm模版都可以直接使用ObjectTools,vm模版全部通过ObjectTools来统一访问DAO进而读取数据展示。
4)vm的reload问题(重载与缓存)
有时会发现vm模版修改后进行新请求时,页面会继续采用更改前的模版,这是因为模版的加载是有一定时间间隔的,如要更改立即生效,需要在velocity-(*).jar 包中,找到\org\apache\velocity\runtime\defaults 目录,更改Velocity默认的配置文件:velocity.properties,修改如下2项:
file.resource.loader.cache,模版文件是否进行缓冲
file.resource.loader.modificationCheckInterval,模版资源的修改检测间隔。
用rar把velocity-(*).jar 解压,得到资源文件后修改再更新回.jar 内。
5)exception处理问题
由于与Struts结合,使用了Velocity工具包:velocity-tools.jar,其中的org.apache.velocity.tools.view.servlet.VelocityViewServlet 是默认的Velocity处理引擎,所有的异常处理也都交到VelocityViewServlet的error方法处理,没有类似jsp的 errorPage,所以不能对异常进行方便的包装,所以要想封装exception,只有通过改造VelocityViewServlet来实现。
Dlog4J中增加了dlog4j.VelocityServlet,继承VelocityViewServlet并覆盖了error的处理办法,从而实现对异常的封装和包裹。
6)数组访问
对数组的访问在Velocity中存在问题,因为Velocity只能访问对象的方法,而数组又是一个特殊的Array,所以虽然数组可以进行循环列举,但却不能定位访问特定位置的元素,如 strs[2],数组对固定位置元素的访问调用了Array的反射方法get(Object array, int index),而Velocity没能提供这样的访问,所以数组要么改成List等其他类容器的方式来包装,要么就通过公用Util类的方式来提供,传入数组对象和要访问的位置参数,从而达到返回所需值的目的。
另外在这里值得一提的是,FreeMarker在模板方面,比Velocity有了更多的改进,包括在数组处理方面提供:使用类似[i]语法的索引方式访问数组元素,以及可以查询数组长度。
评论
applicationContext.xml文件中就添加个
<bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer"> <property name="configLocation"> <value>WEB-INF/velocity.properties</value> </property> </bean>
竟然在tomcat启动的时候报错:
信息: Velocimacro : added #springFormCheckboxes( path options separator attributes ) : source = org/springframework/web/servlet/view/velocity/spring.vm
2011-3-28 17:32:29 org.springframework.ui.velocity.CommonsLoggingLogSystem logVelocityMessage
信息: Velocimacro : added #springShowErrors( separator classOrStyle ) : source = org/springframework/web/servlet/view/velocity/spring.vm
2011-3-28 17:32:29 org.springframework.ui.velocity.CommonsLoggingLogSystem logVelocityMessage
信息: Velocimacro : added #springCloseTag( ) : source = org/springframework/web/servlet/view/velocity/spring.vm
2011-3-28 17:32:29 org.springframework.ui.velocity.CommonsLoggingLogSystem logVelocityMessage
严重: Velocimacro : Velocimacro : Error using VM library : org/springframework/web/servlet/view/velocity/spring.vm
2011-3-28 17:32:29 org.springframework.ui.velocity.CommonsLoggingLogSystem logVelocityMessage
严重: java.lang.NumberFormatException: For input string: "0 "
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.<init>(Unknown Source)
at org.apache.commons.collections.ExtendedProperties.getInteger(ExtendedProperties.java:1390)
at org.apache.commons.collections.ExtendedProperties.getInteger(ExtendedProperties.java:1343)
at org.apache.commons.collections.ExtendedProperties.getInt(ExtendedProperties.java:1315)
at org.apache.velocity.runtime.RuntimeInstance.getInt(RuntimeInstance.java:1337)
at org.apache.velocity.runtime.directive.Foreach.init(Foreach.java:327)
发表评论
-
排序的种类及java实现
2012-02-08 17:09 0排序的种类有冒泡排序,选择排序,插入排序,稀尔排序,快速排序, ... -
JAVA的public,private,protected访问权限
2012-02-08 16:33 2874Java中的访问权限有public,priva ... -
java Serialization
2012-02-07 16:11 11631. 什么是Serialization?串行化(Serial ... -
TOMCAT内存溢出 - 解决
2009-09-21 16:02 2409Tomcat默认可以使用的内 ... -
Servlet API 中文版
2009-08-10 17:02 1665基本类和接口 一、javax.servlet.Servl ... -
struts2 异常处理
2009-06-05 22:55 1357关键字: struts 2 在学习struts2的过程中,想 ... -
struts2的配置文件
2009-06-05 22:50 1668类型struts2共有4类配置文件, struts. ... -
《Velocity java开发指南》中文版(三)
2009-05-12 22:08 212611.Configuring the Log System(日 ... -
《Velocity java开发指南》中文版(二)
2009-05-12 22:04 26226.Using Velocity In Servlets 1 ... -
《Velocity java开发指南》中文版(一)
2009-05-12 22:00 2761源文见 http://velocity.apache.org ... -
Subvision SVN 服务端与客户端的安装
2009-04-11 17:44 6958一、准备工作1、获取 Su ... -
Struts:logic:iterate用法详解
2009-03-27 14:57 3525Iterate主要用来处理在页面上输出集合类,集合一般来说是下 ... -
weblogic 8.1.4 hibernate3 异常 org.hibernate.hql.ast
2009-03-27 14:55 1584前几天开始写代码,在weblogic 8.1.4上用hiber ... -
WebLogic设置session超时时间
2009-03-27 14:52 3516WebLogic如何设置session超时时间 1 web.x ... -
Spring的四种声明式事务的配置-Hibernate事务
2009-03-20 17:18 1246以下两个bean的配置是下面要用到的。 Xm ... -
NetBeans 6.5 解决内存溢出
2009-03-18 17:19 20461,修改英文netbeans界面字体大小,修改%Netbea ... -
hibernate集合映射inverse和cascade详解
2009-03-06 10:31 9894. hibernate如何根据pojo来更新数据库4.0 在 ... -
RandomAccessFile类 乱码问题的解决
2008-12-11 11:32 5741//用RandomAccessFile读取出来乱码的解决 St ... -
java中一些常用转义字符
2008-12-10 14:37 2308转义序列 标准形式 功能描述 \n NL ... -
在JAVA文件中获取该项目的相对路径
2008-11-08 19:28 17521.基本概念的理解 绝对路径:绝对路径就是你的主页上的文件或 ...
相关推荐
本文档详细的解析了velocity的语法及其运行机制,通过学习本文档,可以快速全面的了解velocity,并且使用velocity开发项目
网上看到的关于adams的函数总结,不错的
《大数据时代》读后感 学习总结 关于作者 维克托·迈尔-舍恩伯格(Viktor Mayer- Schönberger),他是十余年潜心研究数据科学的技术权威,他是最早洞见大数据时代发 展趋势的数据科学家之一。 关于大数据 大数据是...
使用SpringBoot+Mybatis+velocity开发。开发工具和Java语言介绍 内容包括: 开发工具和Java语言 Spring入门,模板语法和渲染 数据库交互iBatis集成 用户注册登录管理 资讯发布,图片上传,资讯首页 评论中心,站内...
学习总结 大数据培训心得全文共1页,当前为第1页。 大数据培训心得全文共1页,当前为第1页。 大数据的定义 也叫巨量资料,指的是所涉及的资料量规模巨大到无法透过目前主流软件工具,在合理的时间内达到采集、管理 ...
总结 2. 安装和运行Maven 2.1. 验证你的Java安装 2.2. 下载Maven 2.3. 安装Maven 2.3.1. 在Mac OSX上安装Maven 2.3.2. 在Microsoft Windows上安装Maven 2.3.3. 在Linux上安装Maven 2.3.4. 在FreeBSD或...
struts2 action几乎完全吸收了xwork 的精华,近日学习struts 2,总结一下action的配制方法。struts2相关的配置文件有web.xml(必须的),struts.xml(必须的),struts.properties,struts-default.xml,velocity.properties...
松哥的书里边,其实有涉及到 Vue,但是并没有详细说过,原因很简单,Vue 的资料都是中文的,把 Vue.js 官网的资料从头到尾浏览一遍该懂的基本就懂了,个人感觉这个是最好的 Vue.js 学习资料 ,因此在我的书里边就...
16 7.2 逻辑结构 18 7.2.1 数据表结构详细设计 18 7.2.2 数据库表之间的关系设计 19 8 程序效果展示 20 8.1 前台功能模块 20 8.2 后台功能模块 22 9 实习总结体会 27 实习内容简述 1 实习期间完成的学习内容: 1 ...
"速度快Velocity":大规模数据的处理对运算能力提出了新的要求。 这里我们从舍恩伯格在《大数据时代》这么书中提到的内容入手,总结的大数据的三个特征。 1、不是随机样本,而是全体数据 过去由于技术、经济、等多个...
第⼆个,Velocity,即⾼速,速率快,⼤数据产⽣的速度是很快的,有个知名的说法,即⼤ 数摩尔定律,据测算,现在每两年数据就会翻⼀倍,这个增长量是及其可怕的。第三个,Variety多样性,之前产⽣的数据多半是结构化...
大数据的特性 大量(Volume) 多样(Variety) 快速(Velocity) 价值(Value) 大数据技术的由来 自 2002 年 数 字 时 代 开 启 以 来,数据呈现海量增长趋势(如图 所示)。特别是在2004年社交媒体 产生后,数据更...
人工智能的简述 02 人工智能发展第三次热潮主要源于三个重要因素:计算能力、深度学习算法和大数据的发展; 03 人工智能未来最可能替代掉的是重复性高、规则相对标准化的工作机会,比如客户服务人员、电话销售人员...
总结 我们在学习和了解⼤数据、云计算等过程中,还是要考虑⼀些⽅法来实现。我们有⼤数据,我们要从这些数据中得到我们想要的、对我们有 ⽤的信息,想应对⼤数据时代,数据挖掘这门课就是少不了。简单点来说,⼤...