2017-06-23 11:38

创建 template 时的线程安全问题不需要处理,Template 对象并不需要做成单例,如果出现多线程并发同时创建“同一个key" 值的 Template,让后一个创建的线程,在 templateCache.put(key, template) 时覆盖掉前面的就可以了

如果让 templateCache 使用 ConcurrentHashMap 或者使用 synchronized 进行同步,会拉低性能

关键在于 Template 对象大并发情况下,多个线程 parse 出多个“相同 key" 的 Template 无关紧要,在那一时刻多消耗点时空而已

2017-06-23 11:30

@i++ jfinal 3.1 版本改进了这个地方,升级到了 jfinal 3.1 没?

2017-06-23 11:26

jfinal 将此建议纳入到改进列表,看有没有好的办法解决 String template 的缓存问题,目前能想到的是对 String 型 Template 不做缓存,因为 jfinal template engine 是自己手写的解析器,解析模板的性能比 freemaker、velocity 快五倍,这个解析的时空消耗在大多数应用场景下可以忽略

2017-06-23 11:23

这确实是个非常好的建议,对于 String 型的 Template 来说,当内容发生变化时,key 值也发生了变化,所以也就找不到原来那个 key 值,无法删除 String 型的 Template 的缓存

目前需要开发者手动 remove 一下 cache,可以采用如下的方式:
1:web 项目之下:RenderManager.me().getEngine().removeTemplateCache(key)
2:非 web 项目,Engine.use(...).removeTemplateCache(key)

2017-06-23 11:08

ClassNotFoundException 这个是最基本的异常,缺少 jar 包而已,如果 jar 包确实存在有可能是版本不对或者类路径不对

2017-06-23 11:06

在 MetaBuilder 中设置断点,里面有一个生成 table 的 Meta 信息的处理,看那个处理对前缀的处理出了什么问题

2017-06-22 23:24

LDConfig 完全可以改造成为 LucenePlugin,然后里面添加一点 setter 方法进行配置,然后再 me.add(lucenePlugin) 即可打完收工了

2017-06-22 23:23

建议做一个 jfinal 的 lucene 插件出来,然后发布到 maven 中心库,我再添加这个插件到 jfinal club 项目中去

2017-06-22 23:22

感觉越来越简单了,啥时候帮 jfinal club 项目添加个 lucene 模块? 然后我在 jfinal.com 社区也添加上这个模块

2017-06-22 22:31

当然可以,只要不使用 com.jfinal.weixin.sdk.jfinal 这个包下面的类文件就可以用在 spring 之中

这样用的时候,要自己添加原来在 ApiInterceptor 以及 MsgInterceptor 中的功能代码,很容易实现

2017-06-22 21:42

ActiveRecordPlugin 未正确启动,造成名为 "db2" 的 config 没有正确被创建,从而会在 Db.use("db2") 时报这个错误

2017-06-22 16:28

jfinal 升级到 3.1 版本,你的版本是两年前的了

2017-06-22 16:28

@txw_506 你的数据表字段名为 projectSeq,而你的 setter 方法是:
set("proect_seq", ..) 这显然不行

而且 jfinal 也不是这么来用的, getModel 搞定所有参数,不需要再一个一个的 set(...) 进去

建议下载首页的 jfinal deom , 用上里面的 Generator,自动化生成 Model 搞定一切

2017-06-22 16:07

在 proejct.save() 这行代码处设置一个断点,进入到 save() 方法内部,看一下内部的 Map attrs 属性中有没有值,一步步定位问题

目前从表面上看是没有问题的,可能是某个地方出现意想不到的问题,例如你是否改变过 jfinal 底层的实现