2016-08-31 16:07
如果用多线程,你的主线程还是得在那去等新开的线程处理完成,如果不是为了将多个任务分发给多线程处理来提升性能的话,没有必要使用多线程,当前 action 本身就是一个单独的线程
你们领导说的那种情况是系统不稳定造成的,这种情况,通常直接返回给客户端一个错误提示,让其重新刷新、操作就好了,系统不稳定是需要极力去解决的,不能让你的代码去解决这种不稳定,如果你的业务代码还要去关心这种事情,是不是也该关心一下系统硬件可能某个字节存储错误的事情?
不同的部分只该去关心自己核心要解决的问题,出错以后回滚事务,报告异常,提示到用户后续的操作足矣,谁出了错应该是去解决那个出错的地方
2016-08-31 11:14
@飞舞稻草 建议你对比一下 jfinal 中的 Jackson.java 与自己的源码,消除差异应该就可以了,代码在: com.jfinal.json.Jackson
2016-08-31 11:06
jfinal 默认使用的是 JFinalJson 来做的 json 转换操作,在做转换时只对 Model 中的 Map attrs 进行处理,对 attrs 反序列化比较麻烦,代码量过大,所以暂未支持
而 JacksonFactory 反序列化使用的是 model 中的 setter 方法,而不是 Map attrs,所以反序列化比较容易,也是最常规的处理方式
JFinalJson 其实也可以去利用 setter 方法来反序列化,但已经有 jackson、fastjson 这样非常专用的工具实现了,就不再重复造轮子了,而是利用 JacksonFactory、FastjsonFactory 直接使用第三方
2016-08-30 21:55
介绍比较简单的解决方案,方案一:
1:去掉 private List group 类似的属性
2:可留下 setGroup(List group)这样的方法,在此类方法内部使用 put(k, v) 与 get(k, v) 的形式将数据存放在 model 的 Map attrs 属性中即可
方案二:
1:使用 jfinal 2.2 的 Generator 生成 baseModel,为 model 添加上了 getter、setter
2:在最终的 Model 例如上例中的 Servers 类中添加你所需要的额外属性与 getter、setter
3:通过 me.setJsonFactory(new FastjsonJsonFactory()) 将 json 实现切换到 fastjson,这样在转换 json 时会根据 setter 与 getter 来转换,就会照顾到你额外添加的 getter 方法
2016-08-30 17:32
@justcode 只要设置成 utf-8,然后关闭 eclipse 再重新打开一下就好了