freemarke之TemplateDirectiveModel详解

摘要:
通过实现该接口,用户可以自定义标签(指令)进行任意操作,、任意文本写入模板的输出。该接口中只定义了如下方法,当模板页面遇到用户自定义的标签指令时,该方法会被执行。

http://hougbin.iteye.com/blog/1457924

TemplateDirectiveModel接口是freemarker自定标签或者自定义指令的核心处理接口。通过实现该接口,用户可以自定义标签(指令)进行任意操作,、 任意文本写入模板的输出。

该接口中只定义了如下方法,当模板页面遇到用户自定义的标签指令时,该方法会被执行。

public void execute(Environment env, Map params, TemplateModel[] loopVars,
TemplateDirectiveBody body) throws TemplateException, IOException;

@param env:系统环境变量,通常用它来输出相关内容,如Writer out = env.getOut();

@param params:自定义标签传过来的对象,其key=自定义标签的参数名,value值是TemplateModel类型,而TemplateModel是一个接口类型,通常我们都使用TemplateScalarModel接口来替代它获取一个String 值,如TemplateScalarModel.getAsString();当然还有其它常用的替代接口,如TemplateNumberModel获取number,TemplateHashModel等

@param loopVars 循环替代变量

@param body 用于处理自定义标签中的内容,如<@myDirective>将要被处理的内容</@myDirective>;当标签是<@myDirective />格式时,body=null

==========================================

下面将详细讲解如何用java实现自定义标签

第一步:freemarker基本配置

Configuration cfg = new Configuration();

第二步:获取模板

Template tt = cfg.getTemplate("你定义的ftl模板的位置","UTF-8");

第三部:

免责声明:文章转载自《freemarke之TemplateDirectiveModel详解》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Kubernetes 1.5通过Ceph实现有状态容器【转】 JS实现HTML标签转义及反转义下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

关于面试总结12-接口自动化面试题

前言 前面总结了一篇关于接口测试的常规面试题,现在接口自动化测试用的比较多,也是被很多公司看好。那么想做接口自动化测试需要具备哪些能力呢? 也就是面试的过程中,面试官会考哪些问题,知道你是不是真的做过接口自动化测试?总的来说问的比较多的就是以下几个问题: 1.json和字典的区别? -对基础数据类型的考察 2.测试的数据你放在哪? -数据与脚本分离 3.参...

学习设计模式之适配器模式

适配器模式 将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 Adapter 模式的宗旨:保留现有类所提供的服务,向客户提供接口,以满足客户的期望。 首先应该明白一点,适配器是最后的补救措施,应该在功能设计的时候尽量避免。所以请在设计功能的时候忘掉这个模式。 类结构图Target 用户...

如何让模拟的json数据接口能够正常的在手机上有效果

1. 确保手机与PC在同一个ip网下 这里我是通过------------360随身WIFI,20块钱淘宝上卖的,外观像U盘一样的,直接插在电脑的USB上就能在PC上创建一个WiFi,手机连接上就可以了。 其他方式请自行解决。 2.电脑上通过Tomcat或者IIS搭建本地服务 直接把准备好的json文件扔进服务器根目录去,根据文件夹正确的路径可以访问到即可...

DateUtil

public class GenernalDate { //一天秒数 public final static long MILLISECONDS_OF_DAY = 1000 * 60 * 60 * 24; public final static int NULL_DATE = 19000101; private fi...

java BigDecimal实现精确加减乘除运算

加法: b1.add(b2) b2(加数) b1(被加数)减法: b1.subtract(b2) b2(减数) b1(被减数) 乘法: b1.multiply(b2) b2(乘数) b1(被乘数) 除法: b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP) b2(除数) b1(被除数)   import j...

国产USB2.0转UART/FIFO芯片DP2232H替代FT2232H

DP2232H是一个USB2.0高速(每秒480兆位)至UART/FIFO芯片。 具有在多种工业标准串行或并行接口配置的能力。有两个多协议同步串行引擎(MPSSE)允许使用JTAG,I2C和SPI两个通道同时进行通信。 DP2232H芯片特性**替代FT2232H,软硬件兼容**∞ 单芯片USB双串行/并行端口具有多种配置。∞ 整个USB协议都在该芯片上处...