• freemarker实现自定义指令和自定义函数


    自定义指令:

    1.指令在前台实现

      <#macro name param1,param2,param3...paramN>

      </#macro>

    2.指令在后台实现

     1.实现TemplateDirectiveModel接口

    参数说明:
      1. environment : 是环境变量,在这里我们可以拿到 通过  environment.getOut  拿到 Write 。
      2. map :这里我们可以等到参数,这里的参数是以 键值对的形式存在的。
      3. templateModel : 是所以数据类型的顶级接口,我们  可以通过  templateMole[i]  通过这个i变量来返回我们指定的第几个参数的返回值。
      4. templateBody : 是标签开始和结束的 内容 ,通过这个对象的 render()方法我可以接着执行 自定义标签里的 其他标签(freemarker内置标签或者我们自定义标签)

    2.配置实现类bean到spring bean xml配置文件

    3.将实现类bean设置到freemarkerConfig全局变量中

      <property name="freemarkerVariables">

        <map>

          <entry key="XXX" value="beanID" />

        </map>

      </property>

    ......

    或者<entry key="XXX">

        <bean class="com.XXX" />

      </entry>

    4.ftl文件中访问方式

    <@XXX name="XXX",...></@XXX>

    自定义函数:

    1.定义在前台

      <#function name param1,param2,param3...paramN> ... <#return returnValue> </#function>

    2.定义在后台

      1.实现TemplateMethodModelEx或者TemplateMethodModel接口

    TemplateMethodModelEx扩展了TemplateMethodModel,其暗示FTL引擎,形式参数应该直接以TemplateModel-s形式放入java.util.list。否则将会以String-s形式放入List

    2.将实例放入数据模型

    mav.add("functionName",new XXX());

    也可以放入spring-freemarker的配置文件中

  • 相关阅读:
    C#进阶之路(五):Linq初识
    C#进阶之路(四):拉姆达
    SQL夯实基础(五):索引的数据结构
    SQL夯实基础(四):子查询及sql优化案例
    SQL夯实基础(三):聚合函数详解
    C#进阶之路(三):深拷贝和浅拷贝
    SQL夯实基础(二):连接操作中使用on与where筛选的差异
    前端面试题整理—HTML/CSS篇
    CSS盒模型
    node的优缺点及应用场景
  • 原文地址:https://www.cnblogs.com/Mr-Rocker/p/7676188.html
Copyright © 2020-2023  润新知