Velocity #macro指令
来源:互联网 发布:新视野大学英语 软件 编辑:程序博客网 时间:2024/05/17 08:12
#macro指令用于定义一个VTL模板的重复代码块——宏。下面是一个简单的定义宏的例子:
#macro( d )<tr><td></td><tr>#end
这段代码定义了一个宏,名字为d,没有参数。下面是使用这个宏的代码:
#d()
Velocity在遇到#d()的时候,会用"<tr><td></td></tr>"替代上面的#d()这一行。
宏的参数:
宏也可以带参数,而且是任意多个参数。不过,宏定义时有几个参数,宏调用时就要提供同样数目的参数。
#macro( d $name) <tr><td>$name</td></tr>#end
#d("name1")
宏的参数可以是以下VTL元素中的任意一种:引用、字符串字面值、数值字面值、整数范围(比如[1 .. 10]、[$start .. $end])、数组、布尔值true或者false。
宏的参数可以是方法,那么下面这个例子,需要特别注意:
#macro(test $a) $a $a $a#end#test($foo.bar())
上面这个例子中,$foo.bar()将会被调用3次,而不是一次。
内联的宏
当宏是在一个Velocity模板中定义时,这个宏(是inline的)只能被该模板使用,同一个网站下的其他模板是不能用的。如果是在一个Velocity宏模板库中定义的宏,就可以被任何同一网站下的模板使用。
和宏有关的一些Velocity属性
velocimacro.library——用逗号分隔的一组文件名,是Velocity宏模板库。默认值是VM_global_library.vm
velocimacro.permissions.allow.inline——宏是否可以在一个普通模板中定义。默认值是false。
velocimacro.permissions.allow.inline.to.replace.global——是否允许模板中的宏覆盖library中的宏。默认值是false。
velocimacro.permissions.allow.inline.local.scope——一个在普通模板中定义的宏,是否允许其他模板使用。默认是false。
velocimacro.context.localscope——在一个宏里通过#set()修改了context,此修改是否仅仅对这个宏自身,而不是永久性修改了context。默认值是false。
velocimacro.library.autoreload——Velocity宏模板库修改之后,是否自动重新加载。默认值是false。debug时可以设置为true,发布时设置为false。
其他一些注意点
宏必须在第一次使用它之前定义。当#Parse()一个模板文件时,尤其要注意这一点。
- Velocity #macro指令
- velocity宏#macro
- velocity:宏(#macro)出现中文乱码
- velocity自定义指令示例
- Velocity #set指令
- Velocity #if/#else指令
- Velocity #foreach指令
- Velocity 指令的转义
- velocity 基础指令
- velocity--Command 指令
- ARM 汇编 伪指令 MACRO及MEND
- ARM 汇编 伪指令 MACRO及MEND
- ARM 汇编 伪指令 MACRO及MEND
- ARM 汇编 伪指令 MACRO及MEND
- ARM 汇编 伪指令 MACRO及MEND
- 预处理器宏指令(Macro)
- 编写自定义的 Velocity 指令
- Velocity自定义指令(函数)
- com.android.ddmlib.AdbCommandRejectedException:***error while installing apk
- python学习——字符串和编码
- 【转载精品】Web Service到底是什么?
- Node.js 文件系统
- 位运算应用口诀
- Velocity #macro指令
- [从头读历史] 第291节 神之物语 七英雄远征底比斯
- 堆_priority_queue_大顶堆
- 简单排序之简单选择排序
- easyUI 级联下拉框(二)
- 从近两年的CVPR会议来看,目标检测的研究方向是怎么样的?
- 二分查找之求中值
- 禁用cookie后session的保持
- NSString拼接字符串