Velocity Velocimacros
Velocimacros
#macro script element 允许模板设计者定义一段可重用的VTL template。例如:
#macro ( d )
<tr><td></td></tr>
#end
在上面的例子中Velocimacro 被定义为d,然后你就可以在任何VTL directive 中以如下
方式调用它:
#d()
当你的template 被调用时,Velocity 将用<tr><td></td></tr>替换为#d()。
每个Velocimacro 可以拥有任意数量的参数――甚至0 个参数,虽然定义时可以随意设置
参数数量,但是调用这个Velocimacro 时必须指定正确的参数。下面是一个拥有两个参数
的Velocimacro,一个参数是color 另一个参数是array:
#macro ( tablerows $color $somelist )
#foreach ( $something in $somelist )
<tr><td bgcolor=$color>$something</td</tr>
#end
#end
调用#tablerows Velocimacro:
#set ( $greatlakes = [ “Superior”, “Michigan”, “Huron”, “Erie”, “Ontario” ] )
#set ( $color = “blue” )
<table>
#tablerows( $color $greatlakes )
</table>
经过以上的调用将产生如下的显示结果:
<table>
<tr><td bgcolor=” blue”> Superior </td></tr>
<tr><td bgcolor=” blue”> Michigan </td></tr>
<tr><td bgcolor=” blue”> Huron </td></tr>
<tr><td bgcolor=” blue”> Erie </td></tr>
<tr><td bgcolor=” blue”> Ontario </td></tr>
</table>
Velocimacros 可以在Velocity 模板内实现行内定义(inline),也就意味着同一个web site
内的其他Velocity 模板不可以获得Velocimacros 的定义。定义一个可以被所有模板共享
的Velocimacro 显然是有很多好处的:它减少了在一大堆模板中重复定义的数量、节省了
工作时间、减少了出错的几率、保证了单点修改。
上面定义的#tablerows( $color $list )Velocimacro 被定义在一个Velocimacros 模板
库(在velocity.properties 中定义)里,所以这个macro 可以在任何规范的模板中被调用。
它可以被多次应用并且可以应用于不同的目的。例如下面的调用:
#set ( $parts = [ “volva”, “stipe”, “annulus”, “gills”, “pileus” ] )
#set ( $cellbgcol = “#CC00FF” )
<table>
#tablerows( $cellbgcol $parts )
</table>
上面VTL 将产生如下的输出:
<table>
<tr><td bgcolor=”#CC00FF”> volva </td</tr>
<tr><td bgcolor=”#CC00FF”> stipe </td</tr>
<tr><td bgcolor=”#CC00FF”> annulus </td</tr>
<tr><td bgcolor=”#CC00FF”> gills </td</tr>
<tr><td bgcolor=”#CC00FF”> pileus </td</tr>
</table>
Velocimacro 可以使用以下任何元素作为参数:
推荐阅读
-
JAVA velocity模板引擎使用实例
-
SpringBoot与velocity的结合的示例代码
-
html文件中jquery与velocity变量中的$冲突的解决方法
-
springMVC+velocity实现仿Datatables局部刷新分页方法
-
Vue中JS动画与Velocity.js的结合使用
-
详解velocity模板使javaWeb的html+js实现模块化
-
Cisco Application Velocity System帐号口令漏洞
-
Google App Engine (Java + String + Velocity)数据访问调试,出现错误 Cannot find class [javax
-
浅谈jsp、freemarker、velocity区别
-
Velocity用户手册---中文版(学习修改版) velocityWeb化工应用服务器jQuery