zoukankan      html  css  js  c++  java
  • Freemarker宏和函数的用法和区别

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

  • 相关阅读:
    OpenJudge 2738 浮点数加法
    OpenJudge 2809 计算2的N次方
    OpenJudge / Poj 1003 Hangover
    OpenJudge 2706 麦森数
    模板:大整数除法
    OpenJudge 2737 大整数除法
    模板:大整数减法
    ES Field Collapsing 字段折叠使用详解
    ES aggregation详解
    一个一站式流式处理云平台解决方案
  • 原文地址:https://www.cnblogs.com/qitian1/p/6463097.html
Copyright © 2011-2022 走看看