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

Posted 壮志凌云

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的配置文件中

以上是关于freemarker实现自定义指令和自定义函数的主要内容,如果未能解决你的问题,请参考以下文章

freemarker中调用java方法,除了内建函数,自定义的怎么调用?

019.过滤器和自定义指令

019.过滤器和自定义指令

Vue 自定义指令

是否可以将 Laravel 策略应用于路由和自定义函数?

函数式宏定义和自定义函数的区别是什么?