This Domain(Admin5.com) is for Sale:

Velocity用户手册---中文版

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

#center ( $stuff )

上面的格式也可以缩写为一行:

#center ( “#bold( ‘hello’ ) )

请注意在下面的例子中参数被evaluated在Velocimacro内部,而不是在calling level。例子:

#macro ( inner $foo )

inner : $foo

#end

#macro ( outer $foo )

#set ( $bar = “outerlala” )

outer : $foo

#end

#set ( $bar = ‘calltimelala’ )

#outer( “#inner($bar)” )

输出结果为:

outer : inner : outerlala

记住Veloctiy的特性:参数的传递是By Name的。例如:

#macro ( foo $color )

<tr bgcolor = $color ><td>Hi</td></tr>

<tr bgcolor = $color ><td>There</td></tr>

#end

#foo ( $bar.rowColor() )

以上代码将导致rowColor()方法两次调用,而不是一次。为了避免这种现象的出现,我们可以按照下面的方式执行:

#set ( $color = $bar.rowColor() )

#foo ( $color )

can I register velocimacros via #parse()?

目前,Velocimacros必须在第一次被模板调用前被定义。这就意味着你的#macro()声明应该出现在使用Velocimacros之前。

如果你试图#parse()一个包含#macro() directive的模板,这一点是需要牢记的。因为#parse()发生在运行期,但是解析器在parsetiem决定一个看似VM元素的元素是否是一个VM元素,这样#parse()-ing一组VM声明将不按照预期的样子工作。为了得到预期的结果,只需要你简单的使用velocimacro.library使得Velocity在启动时加载你的VMs。

What is velocimacro autoreloading?

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

文章评论

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

24小时热门信息