velocity语法小结
java 2008-10-29 12:20 阅读160 评论1 字号: 大大 中中 小小
之前做了个项目,断断续续写了好多的模板。关于velocity网上找了些资料,加上总结,整理后大致常用的为下面这些内容
1.变量定义
因为是一种弱类型语言,所以不用定义变量的类型,编译器根据赋值的类型自动进行判断,定义的关键字为set,set前要加#,变量名前必须加$,变量名和值的组合要放在小括号中,不必用分号结束语句。例如:
#set($maxValue=5)
#set($name="Bob")
也可以定义数组,形式如下:
#set($arrayName=["element1","element2",...])
例如:#set($members=["mary","rose","Mr Black"])
2.注释
对单行注释,形式如下:
#set($name="mike") ##这是一个注释:定义名字为mike
对多行注释,形式如下:
#set($name="mike")
#*
这是一个多行注释:定义名字为mike,
如果定义为其他的,不符合用户习惯!
*#
3.流程控制
支持的流程控制有:#if...#else...#end(逻辑判断语句)和#foreach(... in ...)...#end(循环语句),可以嵌套使用。例如:if的例子
#set($name="mary")
#set($sex="female")
#set($age=20)
#set($coutry="America")
#if($name=="mary")
hello mary!
#end
#if($sex=="male")
You are a boy!
#else
You are a girl!
#end
#if($age<12)
You are too young!
#elseif($age>12 && $age<18)
You are not an adult!
#else
You are an adult!
#end
#if($country!="China")
#if($country=="Amemica")
You are from America!
#end
#else
#if($city=="Beijing")
You are from Beijing!
#else
You are not from Beijing!
#end
#end
例如:foreach的例子
#set($members=["mary","rose","mike"])
#foreach($member in $members)
$member
#end
另外,foreach循环不仅可以显示数组内容,也可以显示java的Vector、List、Iterator等对象的内容,
4.#foreach() #end用于循环输出
#foreach( $key in $allProducts.keySet() )
<li>Key: $key -> Value: $allProducts.get($key)</li>
#end
5. #include,用于包括一些资源文件,当然include是不会去解析资源文件
#include( "one.txt" )
#parse,用于解析并且包括相应的资源文件
#parse( "me.vm" ),和主文件共享相应的Context
#stop,用于停止执行解析,并返回,主要用于调试功能。
6.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 支持内嵌语法,所以对于模版的定义,就变得更加的灵活而简单了。
关于写模板,这次的项目把传说中一局双赢的MVC模式运用了一把。已经不记得拿到变量列表的时候是啥心情了,反正有那张表终于结束了我猜变量名的时期!!值得高兴。实际操作和我理解的最佳配合方案貌似有差距,不过也确实解决了我不能容忍范围内80%的问题。最近freemarker貌似被很多人追捧。有时间去喵喵!http://swingchen.bokee.com/4137438.html。
java 2008-10-29 12:20 阅读160 评论1 字号: 大大 中中 小小
之前做了个项目,断断续续写了好多的模板。关于velocity网上找了些资料,加上总结,整理后大致常用的为下面这些内容
1.变量定义
因为是一种弱类型语言,所以不用定义变量的类型,编译器根据赋值的类型自动进行判断,定义的关键字为set,set前要加#,变量名前必须加$,变量名和值的组合要放在小括号中,不必用分号结束语句。例如:
#set($maxValue=5)
#set($name="Bob")
也可以定义数组,形式如下:
#set($arrayName=["element1","element2",...])
例如:#set($members=["mary","rose","Mr Black"])
2.注释
对单行注释,形式如下:
#set($name="mike") ##这是一个注释:定义名字为mike
对多行注释,形式如下:
#set($name="mike")
#*
这是一个多行注释:定义名字为mike,
如果定义为其他的,不符合用户习惯!
*#
3.流程控制
支持的流程控制有:#if...#else...#end(逻辑判断语句)和#foreach(... in ...)...#end(循环语句),可以嵌套使用。例如:if的例子
#set($name="mary")
#set($sex="female")
#set($age=20)
#set($coutry="America")
#if($name=="mary")
hello mary!
#end
#if($sex=="male")
You are a boy!
#else
You are a girl!
#end
#if($age<12)
You are too young!
#elseif($age>12 && $age<18)
You are not an adult!
#else
You are an adult!
#end
#if($country!="China")
#if($country=="Amemica")
You are from America!
#end
#else
#if($city=="Beijing")
You are from Beijing!
#else
You are not from Beijing!
#end
#end
例如:foreach的例子
#set($members=["mary","rose","mike"])
#foreach($member in $members)
$member
#end
另外,foreach循环不仅可以显示数组内容,也可以显示java的Vector、List、Iterator等对象的内容,
4.#foreach() #end用于循环输出
#foreach( $key in $allProducts.keySet() )
<li>Key: $key -> Value: $allProducts.get($key)</li>
#end
5. #include,用于包括一些资源文件,当然include是不会去解析资源文件
#include( "one.txt" )
#parse,用于解析并且包括相应的资源文件
#parse( "me.vm" ),和主文件共享相应的Context
#stop,用于停止执行解析,并返回,主要用于调试功能。
6.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 支持内嵌语法,所以对于模版的定义,就变得更加的灵活而简单了。
关于写模板,这次的项目把传说中一局双赢的MVC模式运用了一把。已经不记得拿到变量列表的时候是啥心情了,反正有那张表终于结束了我猜变量名的时期!!值得高兴。实际操作和我理解的最佳配合方案貌似有差距,不过也确实解决了我不能容忍范围内80%的问题。最近freemarker貌似被很多人追捧。有时间去喵喵!http://swingchen.bokee.com/4137438.html。