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

  • 相关阅读:
    fiddler使用
    Laravel数据库操作
    mysql 小知识点备忘(一)
    移动端和服务器端通信
    js函数和代码片段
    tomcat9目录结构解析
    数据库三范式的理解
    win10修改hosts文件
    Java十六进制字符串与二进制数组互转、&0xff的作用
    15、SpringBoot实现Excel的导入导出
  • 原文地址:https://www.cnblogs.com/qitian1/p/6463097.html
Copyright © 2011-2022 走看看