2022-05-30 19:36

@jfinal爱好者22 jfinal 中大部分代码是 10 年前的,最简洁的设计在 com.jfinal.template 下面,即便是这下面,也是 2016 年的代码了

2022-05-29 19:20

已 fork、start、点赞、收藏,功能全应该很有用

2022-05-29 11:21

独立版本的 activerecord 不依赖 log 模块,要去掉所有 Log.xxx 有关的代码这是出发点

去掉以后,为了不丢失异常,多数地方应该要抛出异常给上层,上层再做日志就能保全异常信息,通常上层用一个全局拦截器即可收集所有这类异常

为啥没有继续向上层抛出,是因为 finally 上方还有一个 catch (Exception e) ,那么当 catch 与 finally 同时出现异常,catch 中的异常将丢失,但 catch 中的异常远比 finally 中的重要

因为 catch 中多数是与 sql、参数甚至业务有关的异常,而 finally 中可能就是一个数据库连接断开的异常

最后 finally 的 conn.setAutocommit(..) 出现异常的概率极低,综上考虑 ......

2022-05-18 13:12

@飞水 上面的用法是对,注意 index 的值要是 int/Integer 类型,高版本 enjoy 支持 long/Long 类型

2022-05-17 23:14

@21th 5.0.0 版本新添加的可选链操作也挺香的,记得用上:
article?.account?.getNickName()?.length()

2022-05-17 19:32

前端的 enigne 配置上了 templateEngine.setDevMode(true), 很赞, 因为前端页面改完上传就直接生效了

enjoy 的 devMode 性能非常好,在加载模板之前会判断模板修改时间,只有真的修改了,才会重新加载,不多消耗性能

2022-05-17 19:30

@杜福忠 同学是正解 @daisy1024

自己管理各种 Plugin 即可,jfinal 中的 plugin 可以独立创建、启动、关闭

2022-05-17 19:27

这个方案非常简洁明了,用两个 Engine 对象分别处理前台和后台的页面,enjoy 模板引擎对象每一个都可以独立配置、使用,十分便捷

2022-05-17 19:20

这篇文档中的最后,有说明,永远不要让字符 # 出现在表达式中:
https://jfinal.com/doc/6-4

#(array[#(index)])
改为
#(array[index])
即可

2022-05-14 14:08

@gisphm 找到最本质的原因了,感谢分享

2022-05-13 21:37

参数是: "69' union select 1,2--"

这是被 SQL 注入的征兆,注意防范

2022-05-12 00:02

有些配置是可以直接拿到的,例如:
RenderManager.me().getEngine();
JFinal.me().getConstants();

2022-05-10 18:28

@lshz EQ("eq") NE("ne") 这些不是 jfinal 中的功能,是你的项目自己针对数据库封装了一些功能,看上去是用于辅助生成 sql 的,调试一下程序,很容易理解

这种用法很常见,最近我也在用类似的东东

2022-05-06 22:45

@happyboy 为啥不先配置一下,然后就不必转来转去了:
SerializeConfig.getGlobalInstance().put(Record.class, new FastJsonRecordSerializer());

2022-05-06 12:14

以上方案,仍然无法将下划线字段转成驼峰, fastjson 好像还有其它配置可以改变这个行为

如果不可以的话,建议引入 JFinalJson,可以对 json 处理得很好,添加配置:
// 将 Model、Record 字段名在转成 json 时转换为驼峰格式
JFinalJson.setModelAndRecordFieldNameToCamelCase(false);