Freemarker一些常用知识
1. Freemarker中的宏,可以看成Java中的方法,语法如下:
定义: <#macro print msg_m=123> <h3>测试宏的内容,消息:${msg_m}</h3> <#nested> </#macro> 调用: <@print msg_m="Hello">可有可无的内容</@print>
(1).其中参数msg_m,由于宏定义时有默认值,调用宏时可以不指定其值;
(2).<#nested>表示输出调用宏时标签<@print>和</@print>之间的内容,可以重复;
(3).msg_m参数不是必须定义的,如果定义了,调用时应该指定值或者定义默认值,调用时也不能传没定义的参数;
(4).结束标识也可写为:</@>
2.宏中嵌套的内容(nested模板)也可以接收参数,如下面就是一个遍历宏,给<#nested>的内容传入循环变量和循环索引值:
<#macro loop col> <#local max=col?size-1> <#list 0..max as idx> <#nested col[idx],idx> </#list> </#macro> 调用 <@loop col=master.managers;item,index> ${index+1}. ${item} </@loop> #list函数也可以取得索引,上面例子只是为了说明如何取得给<#nested>模板传值 <#list master.managers as item> ${item_index+1}. ${item} </#list>
3.关于变量
(1).macro宏中的局部变量使用#local
(2).普通变量使用#assign
(3).循环变量如#list users as usr中间的usr
(4).变量作用域重叠时,作用域小的会覆盖作用域更大的,不过也有特殊,如:要访问数据模型中的msg,页面也定义了一个局部变量msg,那么可以使用${.globals.msg}访问
4.命名空间
定义:
<#inport "/lib/header.ftl" as head> ${head.username} <#assign username="King" in head> ${head.username}assign修改的是命名空间中的变量值
相关推荐
81314797 2020-11-18
89314493 2020-11-03
81941231 2020-09-17
thisisid 2020-09-09
如狼 2020-08-15
82384399 2020-06-16
86384798 2020-05-12
80183053 2020-05-02
86384798 2020-04-26
86384798 2020-04-11
rionchen 2020-04-09
86384798 2020-04-07
86384798 2020-04-04
80183053 2020-03-07
87201943 2020-03-06
83961233 2020-02-26
87201943 2020-02-21