V1.1.0.R2015072901版本:从原V1.0的fadfox_httpd.jar中分离出来 V1.1.0.R2015090201版本:根据fadfox整理成统一该版本 V1.1.1.R2015091401版本:使用JDK1.7编译 V1.1.2.R2015093001版本:要求使用V1.1.2版本的fadfox.jar V1.1.2.R2015102201版本:支持从AnStatic,AnGlobal,AnNew中读取系统变量 V1.1.2.R2015102601版本:修改for语句方法 V1.1.3.R2015112501版本:整理版本,用于生产系统 V1.1.3.R2015122901版本:根据FTimer改动修改的版本 V1.1.3.R2016020301版本:春节前整理版本号 V1.1.4.R2016041701版本:增加<#include> V1.2.0.R2016072101版本: 1)修改<#for>标签为<#for (item : list)>支持括号和<#for (var item : list)>严格模式 2)增加new和.class表达式,以支持<#var abc = new Abc()/>和<#var list=Global.get(FTable.class).list(Abc.class)> 3)增加<#interceptor>支持在ftm中写拦截器 4)增加包和点号的参数的支持,如com.zhiqim.fadfox.Boot可以是包名,fadfox.manager可以是变量名,属性请使用["property"],如fadfox["key"] 5)增加TemplateVarNotice,当上下文文件context.ftml有改动时,回调更新 V1.2.1.R2016100801版本: 1)增加TemplateEngine.hasTemplate方法,用于使用前先判断是否存在 2)修改原后缀.ftml,.ftm为三个(.ftml,.ftm,.htm) 3)增加<#def>语句,表<#var>类似用于定义变量,但<#def>会优先从include中执行 4)修改${}原名_Apply,修改为_Echo,调用并显示结果,意思更清晰 V1.2.2.R2017010101版本: 1)配合fadfox.jar调整HashMap为FHashMapSO 2)增加return,break,continue的支持,其中function支持<#return "result"/>带结果,template结果会强制转为字符串,for支持break,continue 3)修改TemplateVariable为支持传入variableMap和contextMap数组(原功能写死只支持requestVariableMap和contextVariableMap) 4)增加<#break> <#return>和<#continue>,完善了function,for,和if语句 5)增加对类属性的支持,如variable.property时,如果variable是变量会判断是否有属性[property],但优先级低于本身[variable.property]是一个变量 6)调整对类全称的支持,如com.zhiqim.fadfox.bootstrap.Global.get(Abc.class),会把(com.zhiqim.fadfox.bootstrap.Global)作为类名,为后续引入<#import>作准备 7)增加Java.util和java.lang一些常用类,如String,List等作了全称和别名的配置,以使支持<#var abc = new ArrayList()/>常用类的写法 8)删除AnStatic的支持,增加当变量是类时,先暂存变量结构到_Variable中,在碰到_Method,_Property时支持读取静态变量/常量和调用静态方法, 1、如${FadfoxConstants.F_NAME}是支持的 2、如@{System.out.println("abc")}也支持 9)调整和TemplateNotice接口,统一把Map通知,以前是逐个通知,不利于刷新整个变量表 10)修改_Interceptor拦截后成异常的BUG 11)增加pattern的设置的支持,以前固定为["*.ftml",*.htm,*.ftm] 12)修改process(OutputStream out)时不主动out.flush(),由业务自己触发,否则会引起chuncked V1.3.0.R2017022701版本: 1)增加Templates.format(ftml)方法,格式化后不显示代码,而显示字符串 2)增加_Format语句(#{})支持,对${}的结果进行格式化,相当于${Templates.format(value)} V1.3.1.R2017052801 1)修改Asserts.asserts为Asserts.as()方法,使用三目运算断言,防止断言为真时需要初始化无意义的断言失败字符串 2)增加双点号支持括号 V1.3.2.R2017080501 1)修改<#for>的遍历,原为Collection,改为Iterable,扩大遍历范围 2)修改<#function>,原在include时有效,修改为当前模板都有效 3)修改变量表定义为FLinkedHashMapSV,原来是HashMap,没有顺序 4)修改#{},格式化增加对\',\"处理成'" V1.3.3.R2017110601 1)解决<#for>里面注释<#---->的BUG V1.4.0.R2018010101 1)正式启用ZhiqimML名称,原所有Fadfox改为Zhiqim,原所有fadfox改为zhiqim,原所有FADFOX改为ZHIQIM 2)增加支持自定义的TemplateLoader的子类,如数据库的模板方式 3)调整模板查找方式为倒序查找 4)支持三目运算?: 5)解决三个系统(Windows,Linux,Mac)对\r\n的处理上的不同导致的BUG 6)增加_Method对前面的_New进行检查,如果是_New,则优先组合成构造函数,比后面的_Dot操作优先级高 7)修改模板未找到时响应FileNotFoundException,原来显示不正确 8)删除对@AnNew的自动newInstance的支持,改成要求前缀new,如new Selector(),而不能直接使用Selector 9)修改Template为ZML,统一使用ZML代替模板 10)增加ZmlVarRuntime类,以支持变量运行时实时调用build生成结果 11)增加对ZmlVarRuntime在_Method中检查,得到build结果 12)增加三目运算对null的判断为false(采用js的判断方式,有利于该字段未定义表示false) V1.4.1.R2018072501 1)修改Timer为Every,使用ZhiqimKernelV1.4.1.R2018072501版本 2)修改比较大于时double使用了longValue()方法导致的BUG V1.5.0.R2019010101 1)替换为zhiqim_zml名称 2)替换zhiqim_kernel_v1.5.0_r2019010101的库 3)修改Every为Interval,删除Tasker改为实现Task等修改 4)执行程序和源码分开打包