1 #macro(formatIncreaseData $increase)
2 #if(${product.onlineStatusFlag} =='0')
3 --
4 #elseif(!$increase || $increase=="")
5 --
6 #else
7 #if($increase >= 0)
8 #set($color = "increase-number")
9 #elseif($increase < 0)
10 #set($color = "is-decrease")
11 #end
12 <span class="$!{color}">${NumberUtils.percentageFormat($!{increase})}</span>
13 #end
14 #end
 1 #macro(renderTheme $themeList)
2 #if($themeList.size()>0)
3 #foreach($renqi in $themeList)
4 #set($themeSelected="")
5 #set($closeIcon = "")
6 #if($!{fundGroupId} == $renqi.id)
7 #set($themeSelected="cur")
8 #set($closeIcon = "<span class='closeIcon'></span>")
9 #end
10 <li><a class="theme-name $!{themeSelected}" data-sk="All-reMen" title="$!{renqi.memo}" href=" " data-identity="fundGroupId" data-val="$!{renqi.id}"><span class="">$!{renqi.groupName}</span>
11 $!{closeIcon}
12 </a >
13 </li>
14 #end
15 #end

Velocity中的宏可以理解为函数的定义,在使用的时候,需要考虑到宏的作用域的问题。

1、外层的宏中的变量在内存的宏中可以访问

2、内层中的宏变量如果与外层的变量名冲突,如果有传值则取传入的值,如果没有传值,则取上层的宏中的值!

以上的例子中定义了名为:

formatIncreaseData 和 renderTheme 的函数

调用方式为:
1 #renderTheme($fundGroup.renqiList)
2 #renderTheme($fundGroup.zhutiList)

所以,velocity的宏使Velocity作为一个同步的模板引擎的功能达到最大化!

Velocity(5)——#macro 指令的更多相关文章

  1. Velocity(8)——引入指令和#Stop指令

    #Include和#Parse都是用于将本地文件引入当前文件的指令,而且被引入的文件必须位于TEMPLATE_ROOT.这两者之间有一些区别. #Include 被#Include引入的文件,其内容不 ...

  2. Velocity(6)——#if指令

    下面是#If指令的一个简单而完整的示例: #if ($foo < 10) Go North #elseif ($foo == 10) Go East #else Go West#end 不能漏掉 ...

  3. Velocity(5)——#set指令

    引用可以让模板设计者生成动态内容,而指令允许设计者真正的负责页面的展现和内容. 指令是以#开头,后面紧跟一个关键字,比如if,else,foreach等.而这个关键字,是可以被放在{}中间的.这是规范 ...

  4. Velocity中#set指令

    引用可以让模板设计者生成动态内容,而指令允许设计者真正的负责页面的展现和内容. 指令是以#开头,后面紧跟一个关键字,比如if,else,foreach等.而这个关键字,是可以被放在{}中间的.这是规范 ...

  5. Velocity(4)——引入指令和#Parse 指令

    #Include和#Parse都是用于将本地文件引入当前文件的指令,而且被引入的文件必须位于TEMPLATE_ROOT.这两者之间有一些区别. #Include 被#Include引入的文件,其内容不 ...

  6. Velocity(3)——#set指令

    引用可以让模板设计者生成动态内容,而指令允许设计者真正的负责页面的展现和内容. 指令是以#开头,后面紧跟一个关键字,比如if,else,foreach等.而这个关键字,是可以被放在{}中间的.这是规范 ...

  7. Velocity(7)——#foreach指令

    首先是#foreach的简单示例: #foreach( $elem in $allElems) $elem</br> #end 上面这个例子中,$allElems可以是一个Vector,一 ...

  8. Velocity语言的介绍

    Velocity语言的介绍 2016-09-06 15:39:25 语言介绍 Velocity是一种Java模版引擎技术,是一个基于Java的模板引擎(template engine).她允许任何人简 ...

  9. Velocity(9)——宏

    定义宏和使用宏 #macro指令用于定义一个VTL模板的重复代码块——宏.下面是一个简单的定义宏的例子: #macro( d ) <tr><td></td>< ...

随机推荐

  1. Centos 7.4 下初探Zabbix安装

    工作一波停一波起,感觉离开.net好久了. 最近工作中发现服务器监视都是用了zabbix,对于我这类不懂的狠狠弥补了一下知识. 无意发现zabbix带有api,就想开发个工具调用api来着.可是api ...

  2. 干货,比较全面的c#.net公共帮助类

    比较全面的c#帮助类 比较全面的c#帮助类,日常工作收集,包括前面几家公司用到的,各式各样的几乎都能找到,所有功能性代码都是独立的类,类与类之间没有联系,可以单独引用至项目,分享出来,方便大家,几乎都 ...

  3. 大概是:整数划分||DP||母函数||递推

    整数划分问题 整数划分是一个经典的问题. Input 每组输入是两个整数n和k.(1 <= n <= 50, 1 <= k <= n) Output 对于每组输入,请输出六行. ...

  4. RN 常见问题

    React/RCTBridgeModule.h not found #import <React/RCTBridgeModule.h> 全部替换为 #import "RCTBri ...

  5. jQuery Mobile 所有data-*选项,开发全解+完美注释

    全栈工程师开发手册 (作者:栾鹏) jQuery Mobile事件全解 jQuery Mobile 所有class选项 jQuery Mobile 所有data-*选项 jQuery Mobile 所 ...

  6. idea web项目动态部署

    最近通过idea新创建一个web项目,想让web项目的前后端代码都动态部署.虽然网络上已经有了不少文章,但我自己还是有遇到一些坑,因此总结一下我遇到的坑的经验. 项目的web容器用的是本地的tomca ...

  7. 框架应用 : Spring MVC - 开发详述

    软件开发中的MVC设计模式 软件开发的目标是减小耦合,让模块之前关系清晰. MVC模式在软件开发中经常和ORM模式一起应用,主要作用是将(数据抽象,数据实体传输和前台数据展示)分层,这样前台,后台,数 ...

  8. python 目录文件

    每天写一点,总有一天我这条咸鱼能变得更咸 python 中对文件及目录的操作基本依赖与os,shutil模块,其中以os模块为主,最主要的几个方法实例如下: 1.判断文件/目录是否存在(os.path ...

  9. centos7安装shipyard没有本地容器及镜像

    目前docker的使用越来越多,自然需要docker的管理工具.现在使用web管理的较多,web基本上实现了跨平台,只需要浏览器,不要额外的管理客户端.web管理主要推荐shipyard和kubern ...

  10. JAVA提高八:动态代理技术

    对于动态代理,学过AOP的应该都不会陌生,因为代理是实现AOP功能的核心和关键技术.那么今天我们将开始动态代理的学习: 一.引出动态代理 生活中代理应该是很常见的,比如你可以通过代理商去买电脑,也可以 ...