按关键词阅读: 使用 Macro FreeMarker
1、FreeMarker-macro (宏)的使用FreeMarker macro (宏)的使用txt 14热情是一 种巨大的力量 , 从心灵内部迸发而出 , 激励我们 发挥出无穷的智慧和活力;热情是一根强大的支 柱 , 无论面临怎样的困境 , 总能催生我们乐观的 斗志和顽强的毅力没有热情 , 生命的天空就 没的色彩 。
FreeMarker macro (宏)的使用 有人说用freemarker ,但没有用到它的宏 (macro),就=没有真正用过freemarker 。
说的 就是宏是freemarker的一大特色 。
宏的定义可以查看相关的文档 , 里面介绍得 很清楚 , 下面来看看它的一个用法(javaeye帖 子里有讨论) 。
/ 。
2、WEB-INF/template/common/common, ftl:$ title然后在 freemarker. properties 里定义: auto_import=/WEB-INF/template/common/comm on. ftl as c然后其他的ftl文件就可以使用它了test, ftl: 你的内容如果不在 freemarker. properties 里定义, 可以在每个文件里包含这个ftl:不同的场合有不同的运用 。
使用得好的话 ,将会大大节省你的开发时间 。
macro, nested, return语法 用例 Test text, and the params: $fo 。
3、o, $bar, $baaz输出Test text,and the params: a, b, 23Test text,and the params: a, b, -1Test text,Test text,and the params: a, Bar, 23 and the params: a, Bar, -1 定义循环输出的宏 $title?cap_first:$x?cap_firstlist items=mouse, elephant, python”title=Animals”/输出结果Animals:MouseElephantPython包含body的宏$c. $halfc) Las 。
4、t! 输出1. 0.52. 13. 1.54. 2 Last!注意在使用的时候:别忘了双引号 。
宏 Macro宏是在模板中使用macro指令定义 1.1基本用法宏是和某个变量关联的模板片断 , 以便在模板中 通过用户定义指令使用该变量 , 下面是一个例 子: HelloJoe!调用宏时 , 与使用FreeMarker的其他指令类似, 只是使用替代FTL标记中的丸 #一一在 macro指令中可以在宏变量之后定义参数,如: Hello $ person!可以这样使用这个宏变量: 但是下面的代码具有不同的意思: 这意味着将Fred变量的值传给person参数 值不仅是字符串 , 还可以是其它类型 , 甚至是复杂的表达式 。
5、 。
宏可以有多参数,F面是一个例子: Hell 。
$ person!可以这样使用该宏变量 , 其中参数的次序是无关的: greet person=Fred color=black”/) 可以在定义参数时指定缺省值 , 否则 , 在调用宏 的时候 , 必须对所有参数赋值: Hello $ person!注意:宏的参数是局部变量 , 只能在宏定义中有 效 。
嵌套内容FreeMarker的宏可以有嵌套内容 , #nested指 令会执行宏调用指令开始和结束标记之间的模 板片断 , 举一个简单的例子: #macro border 执行宏调用:The bordered text 输出结果: The bordered text #nest 。
6、ed指令可以被多次调用 , 每次都会执行 相同的内容 。
Anything. FMPP输出结果:Anything. Anything. Anything.嵌套内容可以是有效的FTL,F面是一个有些复杂的例子 , 我们将上面三个宏组合起来:greet person=joe/ 输出结果: HelloJoe !/fontXliXfontsize=+2HelloJoe! HelloJoe! 宏定义中的局部变量对嵌套内容是不可见的 , 例 如: #local y =test $y $ count/$ x: $y?default (?) $x?default(?) $count?default(?) 输出结果: tes 。
7、t 3/1: ? ? ?test 3/2: ? ? ?test 3/3: ? ? ?在宏定义中使用循环变量 nestted指令也可以有循环变量(循环变量的含 义见下节) , 调用宏的时候在宏指令的参数后面 依次列出循环变量的名字 , 格式如下: 例如: $c.$halfcLast!这里count是宏的参数 , c, halfc, last则为循环变量,输出结果:1. 0. 5 2. 1 3. 1. 5 4. 2 Last!循环变量和宏标记指定的不同不会有问题 , 如果 调用时少指定了循环变量 , 那么多余的值不可 见 。
调用时多指定了循环变量 , 多余的循环变量 不会被创建: $c$ halfcLast! $c . $ 。
8、halfc Just repeat it. 在模板中定义变量 在模板中定义的变量有三种类型: plain变量:可以在模板的任何地方访问 , 包括 使用include指令插入的模板 , 使用assign指 令创建和替换 。
局部变量:在宏定义体中有效 , 使用local指令创建和替换 。
循环变量:只能存在于指令的嵌套内容 , 由指令(如list)自动创建;宏的参数是局部变量 , 而 不是循环变量 局部变量隐藏(而不是覆盖)同名的plain变量;
循环变量隐藏同名的局部变量和plain变量 , 下 面是一个例子:$x 6. $ x 7. $ x 8. $x9. $ x 2. $ x 3. $x 4. $x 5. $ x 输出结果 。
9、: 1. plain 2. plain 3. local 4. loop 5. local 6. plain 7. loop 8. loop 9. plain2 内部循环变量隐藏同名的外部循环变量 , 如: $x $x $x$x $x输出结果:loop 1 loop 2loop 3 loop 2 loop模板中的变量会隐藏(而不是覆盖)数据模型中 同名变量 , 如果需要访问数据模型中的同名变 量 , 使用特殊变量global,下面的例子假设数据模型中的user的值是Big Joe:$ user$. globals. user 名字空间 通常情况 , 只使用一个名字空间 , 称为主名字空 间 , 但为了创建可重用的宏、 。
稿源:(未知)
【傻大方】网址:/a/2021/0905/0024106931.html
标题:FreeMarker|FreeMarker-macro(宏)的使用