velocity的基本语法

本文介绍了Java模板引擎Velocity,它通过模板语言简化了Web开发过程,特别是MVC框架下界面设计与Java程序开发的协同工作。Velocity使得页面设计者专注于展示效果,而开发者则关注业务逻辑,从而提高了Web站点的维护效率。文章详细阐述了Velocity的语法,包括变量定义、关键字使用、循环、条件判断等核心特性,以及如何利用宏定义简化模板编写。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一个基于java的模板引擎(Template engine),它允许任何人仅仅简单的使用模板语言(template language)来引用java代码定义的对象。当velocity应用于web开发时,界面设计人员可以和Java程序开发人员同步开发一个基于MVC框架web站点。 

    也就是说,页面设计人员可以只关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。Velocity将java代码从web页面中分离出来,这样为web站点的长期维护提供了便利,同时也为我们在JSP和PHP之外又提供了一种可选的方案。 

    先来看看velocity的语法:vtl也就是velocity的基本语言.用过脚本语言的,对于这个应该会很容易上手,其实,基本上,语法可以分为变量和关键词。 
     定义变量:  
    变量使用$作为开头符号,$a 和${a}是一致的。在模版中声明一个变量是很容易的,使用set关键字,例如: 
    #set( $foo = "Velocity" ) 

    对于velocity中,感觉比较灵活的就是变量中,可以直接使用方法,和javabean属性一样方便使用: 
    如下:$customer.Address,$purchase.Total,$customer.Address.phone。不过好像不支持map语法,如:a["key"]这种写法,但是可以使用方法代替:a.get("key")。而使用了方法,感觉就在使用java代码一样方便。当然变量中支持简单的表达式计算:$a+1等等。 
   有一点需要注意的是,如果变量没有解析,还是会输出$a这个变量,而不是空白或者报错。 

     关键字:  
    关键字使用#开头。 
   其关键字也不多,只有少数的几个,但是已经足够用了。如前面的声明变量:#set 
   #if #elseif #else  #end 这是最常用的条件判断,每个判断使用#end结尾 
   #if($a==1)true enough#{else}no way!#end 

   #foreach() #end用于循环输出 
   #foreach( $key in $allProducts.keySet() ) 
    <li>Key: $key -> Value: $allProducts.get($key)</li> 
   #end 
   
   #include,用于包括一些资源文件,当然include是不会去解析资源文件,这和#parse不同 
   #include( "one.txt" ) 

   #parse,用于解析并且包括相应的资源文件 
   #parse( "me.vm" ),和主文件共享相应的Context 
   
   #stop,用于停止执行解析,并返回,主要用于调试功能。 

   基本上,使用以上的语法,可以定义出任何的模版了。当然,为了简化模版的定义,velocity特意推出了#macro这个强大的功能. 
   #macro,类似于宏定义,用于自定义相应的标记。 
   如下定义了一段宏,用于输出表格中的列表 
   #macro( tablerows $color $somelist ) 
    #foreach( $something in $somelist ) 
        <tr><td bgcolor=$color>$something</td></tr> 
    #end 
   #end 
   
   在模版中,只需要使用#tablerows($color $somelist)就可以取代里面的代码了: 
   #set( $greatlakes = ["Superior","Michigan","Huron","Erie","Ontario"] ) 
   #set( $color = "blue" ) 
  <table> 
     #tablerows( $color $greatlakes ) 
  </table> 
  

   而且#macro 支持内嵌语法,所以对于模版的定义,就变得更加的灵活而简单了。 

转自:http://yonguo.iteye.com/blog/101679  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值