velocity跟html是一样使用吗
Velocity是可以在html中使用的,也是网页前端人员都要要熟悉的一种模版引擎;
Velocity是一个基于java的模板引擎(template engine)。
它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。
当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。
Velocity将java代码从web页面中分离出来,这样为web站点的长期维护提供了便利,同时也为我们在JSP和PHP之外又提供了一种可选的方案。
Velocity的能力远不止web站点开发这个领域,例如,它可以从模板(template)产生SQL和PostScript、XML,它也可以被当作一个独立工具来产生源代码和报告,或者作为其他系统的集成组件使用。
Velocity也可以为Turbine web开发架构提供模板服务(template service)。
Velocity+Turbine提供一个模板服务的方式允许一个web应用以一个真正的MVC模型进行开发。
Velocity使用,就是在这个模版内通过它现有语法和函数,然后在html中应用,一般我们结合具体的案例来使用Velocity,这里我举个简单的小例子:
$!obj.getDealInfo().replaceAll("
", "
|
Velocity就是通过这样来实现小的换行的。
Velocity的实例怎么写
velocity是静态模板语言,不是什么平台上,而是你要用它干什么。
我前段是用velocity开发静态网站,就是将整个页面用velocity写好后,放在数据库或干脆代替jsp或html放在程序中,通过velocity解析,将设置的标量替换为后台代码中定义的数据。
比如你在request放入了一个request.setAttribute("foo","zhangsan");在页面可以直接将$foo替换成zhangsan,当然,你再次set后,就会覆盖掉。
还有必须在web.xml中配置velocity,否则没法解析的。
建议你搜索下velocity的资料,很多的Velocity中判断表达式是不是为空
Velocity中判断表达式是否为空
在写模版文件判断数据是否为空的时候,想当然的写成了下面的代码。
#if(${data} != null)
...
#end
结果Velocity解析时抛出了如下错误:
Caused by:.apache.velocity.exception.ParseErrorException: Encountered "null" at generator file[line 7, column 27]
一查Velocity的语法说明,原来Velocity判断null和java是不一样的。
总统上说,判断是否为null有下面几种方法:
1. #if (! $foo) 判断$foo为空,判断非空为 #if ($foo)
2. 使用 #ifnull() 或 #ifnotnull()
#ifnull ($foo)
要使用这个特性必须在velocity.properties文件中加入:
userdirective
=.apache.velocity.tools.generic.directive.Ifnulluserdirective =
org.apache.velocity.tools.generic.directive.Ifnotnull
3. 使用null工具判断
#if($null.isNull($foo))
注意这种方式特别有用,尤其你在需要这个判断作为一个判断字句时,比如我要你判断一个集合为null或为空时只能使用这种方式了:
$if ($null.isNull($mycoll) || $mycoll.size()==0)