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

  • 相关阅读:
    CentOS7防火墙开启与关闭以及开放6379,3306,80等端口
    Linux 安装PHP PECL 百分百成功
    NSIS 无边框移动问题总结笔记
    Flask项目下的app下的settings.py配置
    django excel xlsx 中文编码
    django admin TabularInline raw_id_fields 添加查询 搜索小图标显示
    m3u8文件解密
    python3 tensorflow 试玩
    python3 tensorflow 安装
    Numpy&Pandas 学习
  • 原文地址:https://www.cnblogs.com/qitian1/p/6463098.html
Copyright © 2020-2023  润新知