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 可以使用以下任何元素作为参数:
相关推荐
7. **Velocimacros** 是可重用的宏,可以简化模板编写,提高效率。 Velocity 还提供了对字符串、数值、范围操作的支持,以及对特殊字符的转义机制,确保模板的安全性和正确性。例如,货币符号和 VTL 引用的转义,...
【Velocity中文指南】是针对Java开发者的文档,旨在介绍Velocity模板语言(VTL),帮助页面设计者和内容提供者理解并使用Velocity进行动态内容嵌入。Velocity是一个基于Java的模板引擎,它的核心功能是将Java代码与...
- **Velocimacros**:自定义的宏命令。 **4. 其他特性:** - **Escaping**:处理模板中的特殊字符。 - **Formatting Issues**:格式化问题处理。 - **Advanced Issues**:高级问题解决方法。 #### 四、如何使用...
- **Velocimacro(Velocimacros)**:创建可重用的代码块。 #### 十、获取字面量(Getting literal) - **货币(Currency)**:格式化货币值。 - **有效 VTL 引用的转义(Escaping Valid VTL References)**:如何...
10. `Velocimacros`:宏是可重用的模板片段,可以提高代码复用和效率。 在实际使用中, Velocity 还提供了以下特性: - `Escaping`:用于防止VTL参考或指令的误触发,例如,`\$` 和 `##` 分别用于转义变量和注释。...
### 知识点十:Velocimacros - **参数传递**: 如何定义和传递参数给宏。 - **嵌套和递归**: 如何在宏中使用嵌套结构和递归调用来处理复杂的逻辑。 ### 知识点十一:Velocity的控制讨论 - **初始化运行时配置**: ...
11. **Velocimacros(宏调用)**:宏是可重用的模板片段,可以接受参数,提高代码复用。 12. **Escaping(转义)**:用于处理特殊字符和VTL引用,例如`\$`用于输出美元符号 `$`。 13. **Case Substitution(可选的格式)...
11. **宏 Velocimacros** - 定义可重用的模板片段,类似于函数。 12. **Escaping** - 提供转义机制,避免 VTL 控制指令在输出中被执行。 13. **数学运算 Math** - 支持基本的数学运算。 14. **范围操作符 Range ...
如 Set、代码段(Literals)、If/ElseIf/Else 条件语句、Foreach 循环、包含(Include)、解析(Parse)、中断(Break)、停止(Stop)、计算(Evaluate)、定义(Define)和宏调用(Velocimacros)等。 - 获取代码...
By separating Java code from web pages, Velocity ensures easier maintenance of the site throughout its lifecycle. This offers a more vibrant alternative to JSP and PHP, fostering a cleaner separation...
- **Velocimacros**:宏调用,允许定义和使用自定义的模板函数。 ### 示例:Mud Store Example 在在线泥巴商店示例中,Velocity可以帮助为每个登录的客户提供个性化页面。当客户登录后,Velocity模板可以动态地...
12. **宏(Velocimacros)**:类似于函数,可以定义并重复使用。如`#macro( d )<tr><td></td></tr>#end`,然后用`#d()`调用。 13. **带参数的宏**:宏可以接受参数,如`#macro(tablerows $color $somelist)`,并在...
你可以注册自定义的Velocimacros(宏)或Velocity事件处理程序,以扩展NVelocity的功能。 在C#环境中,NVelocity通常通过NuGet包引入,如`NVelocity.App`,然后使用`VelocityEngine`类加载模板并进行渲染。在ASP...