2019-07-10 16:07
@macaque 使用 model.keep 或者 model.remove 可以过滤一下
站在 jfinal 框架的角度不好过滤, 因为 jfinal 无法知道你哪些字段是想要的,哪些是不想要的
2019-07-10 16:05
@牛打下 FastJson.getJson().toJson(...) 会调用 model 中的 getter 方法获取数据再进行转换,而你的 getter 方法中有查询数据库的操作,所以自然而然就会查询数据库了,正常流程而已
数据库查询写在业务层,不要写在 model 中, 让 model 只去承载数据
2019-07-10 11:34
@牛打下 默认转 json 的实现,会严格按字段名来转,如果你原来的字段是驼峰的就没问题
如果你的这个转换是很少出现,可以用下面的方法来做:
String json = FastJson.getJson().toJson(...);
renderJson(json);
也就是说多数情况使用默认的, 少数特殊情况使用指定的方式来转
默认的 JFinalJson 有一个好处:转换不依赖于 getter 方法,那么关联查询得到的字段值,以及 put 方法放入的字段值也会被转换
而 fastjson 的转换严格依赖于 getter 方法,所以无 getter 方法的值是无法转换的
各有利弊,选好默认,然后用好个别情况
我个人的使用习惯是:
1:mysql 中的字段名使用驼峰形式
2:model 生成 getter、setter 方法
3:配置: me.setJsonFactory(new MixedJsonFactory());
这个使用习惯,一是可以保障 JFinalJson、FastJson 在转 json 时的结果是一致的,因为无论是字段名与 getter 方法转出来的都是驼峰了
不仅转出来值是一致的,而且 MixedJson 支持转换 Model.put 进来的值,以及支持关联查询得到的关联表中的值,而这些值是没有 getter 方法的
2019-07-10 11:29
@tekeyoko actionKey 重复会明确报一个 action already exists 的异常, NoClassDefFoundError 这个一般是缺包引起的