freemaker宏

定义:定义一个标签,标签体中可以包含参数,开始标签和结束标签可以包含内容,内容中可以通过${}方式引用标签体中定义的参数

用法:页面引入标签,通过标签可以直接输出标签的内容

HelloWorld实现

  1. 定义html.ftl
    <#macro html title>
  2. <html>
  3. <head>
  4.   <meta http-equiv="Content-Type" content="text/html; charset=GBK" />
  5.   <title>${title}</title>
  6.   <link rel="stylesheet" rev="stylesheet" href="/oa/file/css.css" type="text/css" media="all" />
  7. </head>
  8. <body>
  9.   <#nested/>
  10. </body>
  11. </html>
  12. </#macro>
  1. 用法:
  2. <#import "/WEB-INF/template/common/common.ftl" as c>
  3.  
  4. <@c.html title="OA">
  5. 你的内容
  6. </@c.html>
  1. 输出结果:
  2. <#macro html title>
  3. <html>
  4. <head>
  5.   <meta http-equiv="Content-Type" content="text/html; charset=GBK" />
  6.   <title>${title}</title>
  7.   <link rel="stylesheet" rev="stylesheet" href="/oa/file/css.css" type="text/css" media="all" />
  8. </head>
  9. <body>
  10.   你的内容
  11. </body>
  12. </html>
  13. </#macro>

相关语法

1.macro

  1. <#macro name param1 param2 ... paramN>
  1. 用例
  2. <#macro test foo bar="Bar" baaz=-1>
  3. Test text, and the params: ${foo}, ${bar}, ${baaz}
  4. </#macro>
  5. <@test foo="a" bar="b" baaz=5*5-2/>
  6. <@test foo="a" bar="b"/>
  7. <@test foo="a" baaz=5*5-2/>
  8. <@test foo="a"/>
  1. 输出
  2. Test text, and the params: a, b, 23
  3. Test text, and the params: a, b, -1
  4. Test text, and the params: a, Bar, 23
  5. Test text, and the params: a, Bar, -1

2.nested(<#macro name param1 param2 ... paramN;x y z> )xyz为nested 标签定义的内容,nested 相当于标签内容的占位符

  1. <#macro repeat count>
  2.   <#list 1..count as x>
  3. <#nested x, x/2, x==count>
  4.   </#list>
  5. </#macro>
  1. <@repeat count=4 ; c halfc last>
  2. ${c}. ${halfc}<#if last> Last!</#if>
  3. </@repeat>
  1. 输出
  2. 1. 0.5
  3. 2. 1
  4. 3. 1.5
  5. 4. 2 Last!

3.循环

  1. <#macro list title items>
  2. <p>${title?cap_first}:
  3. <ul>
  4. <#list items as x>
  5. <li>${x?cap_first}
  6. </#list>
  7. </ul>
  8. </#macro>
  1. <@list items=["mouse", "elephant", "python"] title="Animals"/>
  1. 输出结果
  2. <p>Animals:
  3. <ul>
  4. <li>Mouse
  5. <li>Elephant
  6. <li>Python
  7. </ul>

参考链接

http://tdcq.iteye.com/blog/748266

freemaker宏的用法的更多相关文章

  1. 完善_IO, _IOR, _IOW, _IOWR 宏的用法与解析

    _IO, _IOR, _IOW, _IOWR 宏的用法与解析  原文地址:http://www.eefocus.com/ayayayaya/blog/12-03/245777_20cdd.html 作 ...

  2. C/C++宏的用法

    今天看caffe源码的时候看到了很多宏定义的内容,苦于代码基础薄弱,无法全部理解,故在网上搜得此篇好文,转载一发附原文地址:http://blog.csdn.net/hanchaoman/articl ...

  3. _IO, _IOR, _IOW, _IOWR 宏的用法与解析

    转载:http://blog.chinaunix.net/uid-20754793-id-177774.html 今天在写字符驱动验证程序的时候要用到ioctl函数,其中有一个cmd参数,搞了半天也不 ...

  4. linux内核驱动中_IO, _IOR, _IOW, _IOWR 宏的用法与解析(引用)

    在驱动程序里, ioctl() 函数上传送的变量 cmd 是应用程序用于区别设备驱动程序请求处理内容的值.cmd除了可区别数字外,还包含有助于处理的几种相应信息. cmd的大小为 32位,共分 4 个 ...

  5. Objective-C中系统宏的用法总结

    先说一下本文中会提到的内容:##,__VA_ARGS__, __FILE__, __LINE__ , __FUNCTION__等 宏变量: 先举一个例子,会用到上面这些宏: #define mypri ...

  6. linux内核驱动中_IO, _IOR, _IOW, _IOWR 宏的用法与解析

    在驱动程序里, ioctl() 函数上传送的变量 cmd 是应用程序用于区别设备驱动程序请求处理内容的值.cmd除了可区别数字外,还包含有助于处理的几种相应信息. cmd的大小为 32位,共分 4 个 ...

  7. Linux内核中_IO,_IOR,_IOW,_IOWR宏的用法与解析【转】

    转自:http://blog.csdn.net/hzn407487204/article/details/7995041 在驱动程序里, ioctl() 函数上传送的变量 cmd 是应用程序用于区别设 ...

  8. Linux内核中_IO,_IOR,_IOW,_IOWR宏的用法

    #define _IO(type,nr)        _IOC(_IOC_NONE,(type),(nr),0) #define _IOR(type,nr,size)    _IOC(_IOC_RE ...

  9. cocos2d-x系列笔记技巧篇(2)---关于CREATE_FUNC宏的用法

    FROM://http://blog.csdn.net/jinciyulang/article/details/8631889 阅读cocos2d-x demo的代码,我们会看到有些头文件中使用CRE ...

随机推荐

  1. ADAS

    1 什么是ADAS advanced driver assistance system,即高级驾驶员辅助系统.是基于车上各种传感器的应用,如摄像头.雷达.激光器等. 2 ADAS的构成部分 2.1 a ...

  2. 性能测试--yslow

    YSlow YSlow可以对网站的页面进行分析,并告诉你为了提高网站性能,如何基于某些规则而进行优化. YSlow可以分析任何网站,并为每一个规则产生一个整体报告,如果页面可以进行优化,则YSlow会 ...

  3. 常见寄存器以及常见汇编指令,常见爆破指令 good

    CPU的任务就是执行存放在存储器里的指令序列.为此,除要完成算术逻辑操作外,还需要担负CPU和存储器以及I/O之间的数据传送任务.早期的CPU芯片只包括运算器和控制器两大部分.到了近几年,为了使存储器 ...

  4. apache 绿色版 安装

    下载绿色版apache 本文已apache2.4为例 http://www.apachehaus.com/cgi-bin/download.plx 下载后解压 打开readme_first.html文 ...

  5. eclipse显示adb is down错误,无法真机调试

    cmd进入adb目录下,运行adb kill-server 和 adb start-server还是不能正常调试时, 在360的网络连接列表中找到占用端口5037的adb.exe,全部关闭,重启ecl ...

  6. 怎么升级iOS10教程

    在前两天的开发者大会上刚推出了iOS10,我介绍一下怎么升级到iOS10的办法.所有人只用一个iPhone就可以升级到iOS10,不需要电脑,也不需要开发者账号. http://bbs.feng.co ...

  7. virtualBox redhat 共享文件夹 安装增强功能

    (一) 场景描述: virtualBox设置了共享文件夹,显示让点击安装增强功能 点击后挂载了光盘 运行了里面的run,却一闪而过 原因: 权限不够 在终端,./VBoxLinuxAdditions. ...

  8. Python成长之路第一篇(2)__初识列表和元组

    可以将列表和元组当成普通的“数组”,他能保存任意数量任意类型的Python对象,和数组一样都是通过数字0索引访问元素,列表和元组可以存储不同类型的对象,列表和元组有几处重要区别.列表元素用([])包括 ...

  9. javascript(8)

      给对象添加方法还有两种方式: 第一种: function 类名(){ this.属性; } var 对象名=new 类名(); function 函数名(){ //执行 } 对象名.属性名=函数名 ...

  10. 引用 qsort与sort的比较

    引用 linpder 的 qsort与sort的比较     在C/C++标准库中提供了快速排序的函数qsort():在STL中也提供了sort()排序函数,那么这两个函数哪个快呢?之前与代码-> ...