码迷,mamicode.com
首页 > 其他好文 > 详细

Freemarker宏和函数的用法和区别

时间:2014-11-27 14:32:38      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:freemarker   web开发      function   函数   

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中,同时定义了函数,宏中可以直接使用这个函数。

Freemarker宏和函数的用法和区别

标签:freemarker   web开发      function   函数   

原文地址:http://blog.csdn.net/fansunion/article/details/41544911

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!