2020-06-23 17:54

@糊搞 本来就已经支持清除指定拦截器,注意看文档

2020-06-23 11:51

@Clear 只能用在 Controller、Service 等等被应用拦截器的地方

而 Routes 并未应用拦截器,不能使用 @Clear

2020-06-23 11:50

@北流家园网 下载现成的方案:
http://free-download.jfinal.com/download/MyRenderFactory.zip

这个反复测试过,一定可以的

2020-06-22 23:04

@spring0563 uuid 是唯一的,关键是你两次使用这个 uuid 的时候要使用同一个值

从 cache 中取值,要使用相同的 cacheName 与相同的 key, 而此时的 key 就是 uuid, 要求该值相同

2020-06-22 21:39

代码看上去没错,可能是 uuid 值不同,单步调试一下看看值到底是多少

此外,不要使用 System.out.println(..) 这种方式,用单步调试才专业

2020-06-22 17:29

@永字诀 "输出才是最好的输入" 这个是研究认知那帮人研究得出的结论,我因此受益很多年,我学东西、思考都会将精髓输出到笔记中

2020-06-20 22:32

@杜福忠 已合并,感谢贡献

2020-06-20 22:28

已修正注释文本,感谢反馈

2020-06-20 22:23

== 允许不同类型比较在逻辑上不严谨,如果支持,肯定会出现各种意想不到的后患。 js 的一些设计不严谨,已被证实是非常严重的失误,例如 undefined、null、boolean 这三类东西的比较操作

当前通过 shared method 的用法就挺好

2020-06-20 18:06

@北流家园网 这里解决过了:
http://www.jfinal.com/feedback/1925

这里可以下载解决方案的代码:
http://free-download.jfinal.com/download/MyRenderFactory.zip

2020-06-20 18:05

@jfinalyl 将 sql 模板文件命名为以 ".sql" 为后缀,开发工具会自动当其当成 sql, IDEA 这样的工具会有提示, eclipse 的 sql 插件也应该可以支持

2020-06-20 18:00

正如 @杜福忠 同学所说,想要让 controller 成为单例,无法解决 controller 同部一些属性的多线程问题

虽然你自己放入 controller 的业务层等等实例是无状态的,但 controller 内部持有的一些属性却是有状态的

官方提供的 FastControllerFactory 虽然不是让 controller 成为单例,但是可以让 controller 对象可以被复用,从而可以不必每次都创建 controller 对象

此外,jfinal 的 inject 是极快的,绝大部分情况下无需考虑这方面的性能。jfinal 只是为了追求极致才提供了 FastControllerFactory

jfinal 未将 FastControllerFactory 配置为默认值,是因为担心使用者在 controller 中自己再使用了 "有状态" 的属性,从而引发线程安全问题。这个问题需要覆盖 controller 中的 _clear_() 方法来解决。 在源码中有详细说明

性能一定是排在安全性之后的,况且 jfinal 性能早已过剩

2020-06-20 17:44

@feng_xing Validate 一般用于字段数比较多的表单提交,如果表单有大量重复字段的可以重用同一个 Validator

对于字段比较少的,直接在 controller 中通过 if 判断就可以了

再一个 Validator 属于拦截器,作为一种实现方案存在,你完全可以使用拦截器定制一套自己的 Validator,大量重用代码

我自己的项目中的 Validator 一般很少,一般的 web 项目都是 "读多写少"

2020-06-20 17:41

jfinal 4.9 新增了对 Iterable 的支持,在此之前,对于你当前的 ClusterIndexHealth 应该是当成 java bean 去转换了

如果对这个类的转换用得少的话,建议这么来用:
String json = FastJson.getJson().toJson(...);
renderJson(json);

像上面这样临时用一下 fastjson,其它地方不变

当然,你还可以通过 JFinalJson.addToJson(...) 来彻底地添加对 ClusterIndexHealth 的转让逻辑来解决