freemarker自定义指令
2017-11-08 本文已影响14人
吐痰高手
- 写实际逻辑
定义一个类,实现TemplateDirectiveModel这个借口
重写 execute(Environment env,Map params,TemplateModel[] loopVars,TemplateDirectiveBody body) 方法
//第一个参数: Environment env环境变量
//第二个参数: Map params 入参保存在这个map中
//第三个参数: TemplateModel[] loopVars 返回值,这个返回值必须用freemarker的数据类型
//要返回值,直接loopVars[0] = xxx;loopVars[1] = yyy;就行了
//第四个参数: 一般用body.render(env.getOut())将指令标签中的内容输出
- 声明自定义指令
需要在spring配置文件中为FreeMarkerConfigurer
这个bean配置
<property>
<map>
<entry key="指令名称" value-ref="TemplateDirectiveModel的实现类"/>
</map>
</property>
- 调用格式
<@指令名 入参key1="入参value1" 入参key2="入参value2" ....; result1 , result2, result3
</@指令名>