JFinal 3.0 changelog
1:添加 JFinal Template Engine,将极速开发贯彻到 View 层
2:增强 active record 模块,添加 sql 动态生成与管理功能,三个 API 搞定 mybatis 的核心功能
3:增强 Routes,添加 addInterceptor(),可为每组 Controller 统一配置 Interceptor
4:增强 Routes,添加 setBaseViewPath(),可为每组 Controller 统一配置 baseViewPath
5:增强 render 模块,支持所有 Controller.renderXxx() 方法的定制,淘汰了原来的三个接口
6:添加 Controller.renderToString(),在控制器中利用模板引擎生成 email、短信或 HTML片段等内容,极致便捷
7:添加 QrCodeRender 以及 renderQrCode() 方法,极速生成二维码
8:添加 captcha 验证码模块,引入全面的扩展接口,提升安全性
9:添加 Cron4jPlugin,极速支持任务调度
10:添加Model.dao() 方法,解决小白误用 dao 所带来的线程安全问题
11:增强 JFinalJson 添加对 primitive 数组、Enumeration、Collection 类型支持
12:添加 MixedJsonFactory,使用 JFinalJson 转 json,使用 fastjson 做反向序列化转 object
13:添加 Controller.renderTemplate(),支持主视图为其它模板引擎时混合使用 JFinal Template Engine
14:去掉 Dialect.replaceOrderBy() 中对 orderby 的 replace操作,解决paginate方法无法支持部分复杂 order by 子句问题
15:添加 JFinal.start(String webAppDir, int port, String context)方法,更好地支持 IDEA 环境下使用集成的jetty启动项目
16:添加 Controller.getHeader(),有利于微信小程序开发
17:添加 DbKit.getConfigSet(),便于更深入的扩展开发
18:增强 ActionReporter,支持指定输出方式,添加 url 输出,以及指定参数最大输出长度
19:StrKit、HashKit 添加 slowEquals 方法用于密码验证
20:Model.getConfig() 的可见性由 private 改为 protected
21:CacheInterceptor 的 buildCacheName、buildCacheKey 改为 protected 便于扩展
22:改进 HashKit.generateSalt(),添加 generateSaltForSha256()与 generateSaltForSha512()
23:添加 Generator.setGenerateChainSetter() 方法,支持 baseModel 生成链式 setter 方法
24:改进 TableBuilder,去掉 build() 中判断 size 为 0 的优化,便于探知据库是否连接成功
25:改进 Redis Cache.lrange(),处理 jedis 返回 null的情况
26:增强,添加Model.filter() 方法,便于实现过滤 XSS 脚本这类功能
27:增强 Ret,改为继承自 HashMap,并添加 ok() fail() 系列方法,有利于 javascript 下的 if(ret.isFail) 判断
28:添加 JMap,便于快捷链式构建大量参数
29:改进 active record 模块,支持对所有 Config 进行动态管理
30:ActiveRecordPlugin 添加 addSqlTemplate()、setBaseSqlTemplatePath() 等 sql 管理有关方法
31:Model、Db 添加 getSql()、getSqlPara()、find(SqlPara)、findFirst(SqlPara) 等方法支持 sql 管理
32:TokenManager 的 new Timer 添加 true 参数,变为 demon 线程
33:ModelGenerator 中的 generateDaoInModel 改为 false,提倡 dao对象声明在 Service 层中
34:JettyServer.changeClassLoader() 中添加 webApp.setClassLoader(jfcl),解决热加载时单例问题
35:增强 ModelRecordElResolver,IBean类型先尝试 getter 方法,getter不存在则调用get(String)方法
36:增强 CacheInterceptor、RenderInfo,便于扩展支持更多类型 Render
37:优化 StrKit.isBlank(),并添加 getRandomUUID() 方法
38:改进 I18nInterceptor,解决 switchView 情况下 getRender() 为 null 问题,添加一个实用构造方法
39:改进 TypeConverter,加强对 Timestamp 的支持范围
40:改进 ActionException,保留类型转换 404 异常的 errorMessage
41:改进 ActiveRecordPlugin,oracle 默认事务级别设置为 TRANSACTION_READ_COMMITTED
42:改进 Db、DbPro,添加 queryShort 系列方法
43:改进 JsonRender,支持 renderJson(null)
44:添加 Validator.getActionMethodName() 方法
45:XmlRender 改为使用 JFinal Template Engine 实现
46:HttpKit.post() 支持 data 值为 null 的情况
47:去掉 JFinalFilter final 修饰,便于定制扩展
48:删除 Constants.setBaseViewPath(),已被 Routes 完全取代
49:com.jfinal.token.Token.java 两个构造方法改为 public,便于扩展
50:Page 添加默认构造方法支持 fastjson 这类第三方工具的反向序列化,isLastPage() 方法的逻辑改为 pageNum >= totalPage,添加 toString()方法