freemaker宏
定义:定义一个标签,标签体中可以包含参数,开始标签和结束标签可以包含内容,内容中可以通过${}方式引用标签体中定义的参数
用法:页面引入标签,通过标签可以直接输出标签的内容
HelloWorld实现
代码语言:javascript复制定义html.ftl:
<#macro html title>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<title>${title}</title>
<link rel="stylesheet" rev="stylesheet" href="/oa/file/css.css" type="text/css" media="all" />
</head>
<body>
<#nested/>
</body>
</html>
</#macro>
代码语言:javascript复制用法:
<#import "/WEB-INF/template/common/common.ftl" as c>
<@c.html title="OA">
你的内容
</@c.html>
代码语言:javascript复制输出结果:
<#macro html title>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<title>${title}</title>
<link rel="stylesheet" rev="stylesheet" href="/oa/file/css.css" type="text/css" media="all" />
</head>
<body>
你的内容
</body>
</html>
</#macro>
相关语法
1.macro
代码语言:javascript复制<#macro name param1 param2 ... paramN>
代码语言:javascript复制用例 <#macro test foo bar="Bar" baaz=-1>
Test text, and the params: ${foo}, ${bar}, ${baaz}
</#macro>
<@test foo="a" bar="b" baaz=5*5-2/>
<@test foo="a" bar="b"/>
<@test foo="a" baaz=5*5-2/>
<@test foo="a"/>
代码语言:javascript复制输出 Test text, and the params: a, b, 23
Test text, and the params: a, b, -1
Test text, and the params: a, Bar, 23
Test text, and the params: a, Bar, -1
2.nested(<#macro name param1 param2 ... paramN;x y z> )xyz为nested 标签定义的内容,nested 相当于标签内容的占位符
代码语言:javascript复制<#macro repeat count>
<#list 1..count as x>
<#nested x, x/2, x==count>
</#list>
</#macro>
代码语言:javascript复制<@repeat count=4 ; c halfc last>
${c}. ${halfc}<#if last> Last!</#if>
</@repeat>
代码语言:javascript复制输出 1. 0.5
2. 1
3. 1.5
4. 2 Last!
3.循环
代码语言:javascript复制<#macro list title items> <p>${title?cap_first}:
<ul>
<#list items as x>
<li>${x?cap_first}
</#list>
</ul>
</#macro>
代码语言:javascript复制<@list items=["mouse", "elephant", "python"] title="Animals"/>
代码语言:javascript复制输出结果 <p>Animals:
<ul>
<li>Mouse
<li>Elephant
<li>Python
</ul>
参考链接
http://tdcq.iteye.com/blog/748266