This Domain(Admin5.com) is for Sale:

Velocity用户手册---中文版

时间:2007-10-22  来源:不详  作者:林子

#parse( “me.vm” )

就像#include,#parse接受一个变量而不是一个模板。任何由#parse指向的模板都必须包含在TEMPLATE_ROOT目录下。与#include不同的是,#parse只能指定单个对象。

你可以通过修改velocity.properties文件的parse_direcive.maxdepth的值来控制一个template可以包含的最多#parse的个数——默认值是10。#parse是可以递归调用的,例如:如果dofoo.vm包含如下行:

Count down.

#set ( $count = 8 )

#parse ( “parsefoo.vm” )

All done with dofoo.vm!

那么在parsefoo.vm模板中,你可以包含如下VTL:

$count

#set ( $count = $count – 1 )

#if ( $count > 0 )

#parse( “parsefoo.vm” )

#else

All done with parsefoo.vm!

#end

的显示结果为:

Count down.

8

7

6

5

4

3

2

1

0

All done with parsefoo.vm!

All done with dofoo.vm!

Stop

#stop script element允许模板设计者停止执行模板引擎并返回。把它应用于debug是很有帮助的。

#stop

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” )

看完这篇,您有何感觉呢?

文章评论

共有位Admini5网友发表了评论 查看完整内容

24小时热门信息