Freemarker宏和函数的用法和区别
2014-11-27 13:35
176 查看
1.宏(macro)
写法:
<#macro page url page maskSize=5>
<#if (number == pages)>
<li><a href="javascript:void(0);">下一页</a></li>
<li><a href="javascript:void(0);">尾页</a></li>
<#else>
<li><a href="${buildPageUrl(url2,page.pageNum+1,page)}">(注:这个地方可以直接调用宏所在的FTL中的函数)下一页</a></li>
<li><a href="${buildPageUrl(url2,page.pages,page)}">尾页</a></li>
</#if>
</#macro>
引入方式: <#import "/user/common/macro/page.ftl" as pg >
调用方式:<@pg.page url="${queryUrl}" page=page maskSize=10 />
2.函数(function)
写法:
<#function buildPageUrl url pageNum data>
<#assign pageUrl = "${url}?pageNum=${pageNum}&pageSize=${data.pageSize}">
<#return pageUrl/>
</#function>
引入方式:<#include "/user/common/macro/date.ftl"/>
调用方式: ${buildPageUrl(url2,page.pageNum+1,page)}
3.不同的地方
<#return/> 的用途、引入方式、 调用方式 都不同。
宏:可以提前返回,比如<#return/>
但是不能<#return 1>, A macro cannot return a value
宏,主要作用是,拼接内容,把宏内部的字符串展示出来,return返回值没有意义。
函数:与宏的调用方式不同,直接 ${buildPageUrl(url2,page.pageNum+1,page)}执行函数。
返回值才是最关键的结果,不是为了显示函数内部的字符串内容。
---------------
补充一点,在宏所在的ftl中,同时定义了函数,宏中可以直接使用这个函数。
写法:
<#macro page url page maskSize=5>
<#if (number == pages)>
<li><a href="javascript:void(0);">下一页</a></li>
<li><a href="javascript:void(0);">尾页</a></li>
<#else>
<li><a href="${buildPageUrl(url2,page.pageNum+1,page)}">(注:这个地方可以直接调用宏所在的FTL中的函数)下一页</a></li>
<li><a href="${buildPageUrl(url2,page.pages,page)}">尾页</a></li>
</#if>
</#macro>
引入方式: <#import "/user/common/macro/page.ftl" as pg >
调用方式:<@pg.page url="${queryUrl}" page=page maskSize=10 />
2.函数(function)
写法:
<#function buildPageUrl url pageNum data>
<#assign pageUrl = "${url}?pageNum=${pageNum}&pageSize=${data.pageSize}">
<#return pageUrl/>
</#function>
引入方式:<#include "/user/common/macro/date.ftl"/>
调用方式: ${buildPageUrl(url2,page.pageNum+1,page)}
3.不同的地方
<#return/> 的用途、引入方式、 调用方式 都不同。
宏:可以提前返回,比如<#return/>
但是不能<#return 1>, A macro cannot return a value
宏,主要作用是,拼接内容,把宏内部的字符串展示出来,return返回值没有意义。
函数:与宏的调用方式不同,直接 ${buildPageUrl(url2,page.pageNum+1,page)}执行函数。
返回值才是最关键的结果,不是为了显示函数内部的字符串内容。
---------------
补充一点,在宏所在的ftl中,同时定义了函数,宏中可以直接使用这个函数。
相关文章推荐
- Freemarker宏和函数的用法和区别
- Freemarker宏和函数的用法和区别
- Freemarker宏和函数的用法和区别
- oracle函数之case和decode的用法区别及性能比较
- php中print_r、var_dump和var_export几个函数的用法区别
- php调用外部命令函数system,exec,passthru的区别和用法详解
- C++输入函数的用法和区别
- 引用函数magic_quotes_gpc和magic_quotes_runtime的区别和用法(新手推荐)
- ruby gsub gsub! chomp chomp! 以及所有类似函数用法及区别
- oracle 截取函数 trunc (直接截取不做进位处理)、round(截取时要进位) 的用法与区别
- 指针函数和函数指针的区别(ARM2440中的用法)
- rank(),dense_rank(),row_number()分析函数用法和区别
- 魔法引用函数magic_quotes_gpc和magic_quotes_runtime的区别和用法
- SQL 中详解round(),floor(),ceiling()函数的用法和区别?
- jquery 里bind()和live()函数的区别和用法
- clock()、time()、clock_gettime()和gettimeofday()函数的用法和区别
- 魔法引用函数magic_quotes_gpc和magic_quotes_runtime的区别和用法
- opengl红宝书关于name stack操作两个函数glLoadName,glPushName的用法区别
- 魔法引用函数magic_quotes_gpc和magic_quotes_runtime的区别和用法
- Oracle translate 函数的用法, 以及和replace的区别