zoukankan      html  css  js  c++  java
  • 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的配置文件中

  • 相关阅读:
    vue :调用子组件 ,watch props 时,监听不到
    table 》 td 超出内容过长显示...
    kendo 服务端排序
    Highcharts的基本属性和方法详解
    使用vue element table 自定义列模版
    vue 结合JQ ajax 作用域会改变
    实用的javascript 简写--读后感~
    【iOS】iOS13新增的暗黑模式(Dark Mode)
    【iOS】iOS13后新增的Scene Delegate和不使用工程自带的Main.storyboard
    【iOS】检测项目中是否包含UIWebView
  • 原文地址:https://www.cnblogs.com/Mr-Rocker/p/7676188.html
Copyright © 2011-2022 走看看