[转载]NVelocity的宏使用

[转载]NVelocity的宏使用 – ∠角络 – 博客园.

一、NVelocity使用参数
示例:
1.建立宏
#macro( test $range $arrayList )

#end
2.调用宏
#test([-9,-1] [“favorite”, “color”])
通过以上示例,你只需要一个为每一个需要传递的参数提供了名称的#macro指令,这些参数用空 格进行分隔。如上例中#macro( test $range $arrayList )“test”是宏名,$range $arrayList是参数。用”#”+宏名(参数1,参数2…)来调用宏。

二、NVelocity递归调用

嵌套,最简单的情况就是在NVelocity 中用到macro里调用另外一个macro,这是在实际代码开发中使用得最频繁的一种。递归,是一种特殊类型的嵌套,它是在NVelocity中的 macro里调用自身,但这种情况并不太常见。

#macro( recurs $depth )
进入第 $depth 层<br/>

#set( $depth = $depth – 1 )

#if ( $depth > 0 )

#recurs( $depth )

#end

#set( $depth = $depth + 1 )

进入第 $depth 层<br/>

#end
#recurs( 3 )

执行结果:
进入第 3 层
进入第 2 层
进 入第 1 层
进入第 1 层
进入第 2 层
进入第 3 层
注:在递归调用时,注意 通常不要把一个对象的属性传为参数递归调用,上例中,如果$depth是一个对象的话,那么用#recurs( $depth.attribute)话,模板输出时候往往有问题,而且又查不出来,这里记录一下,忘以后不要出现这样的错误。究其原因,我想是由于是 object类型,往往在调用时认不出对象的类型吧(暂时只能这样去理解了,没深层次去研究过)。

赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏