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);

2022-05-06 12:13

估计你是用了 fastjson 转换,fastjson 只认 getter 方法,所以会调用 record 里头的 getColumns() 方法来转换

解决办法是加配置:
SerializeConfig.getGlobalInstance().put(Record.class, new FastJsonRecordSerializer());


此外,还要创建一个类来支持:

/**
* FastJsonRecordSerializer 支持序列化 activerecord 的 Record 类型
*/
public class FastJsonRecordSerializer implements ObjectSerializer {

public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {
if (object != null) {
Record record = (Record)object;
serializer.write(record.getColumns());
}
}
}

2022-05-05 23:24

@finzmb61495 一是没有时间,二是鼓励大家都用 maven 管理依赖

这周末如果有时间我会针对 5.0.0 最后发布一次 .zip 文件,以后就不再会有了

2022-05-04 15:41

@北流家园网 enjoy 是极简设计,以及采用了独创的词法分析、语法分析算法。添加这个功能,总共也就 30 行代码的事

换成是其它模板引擎,动了操作符,可是不小的工作量,我在以前的博客中有过说明,传统模板引擎需要按下面的方式来做:
1: 修改语法、词法涉及的规则 .g4 描述文件
2: 运行 antlr 的生成器,重新生成 Parser、Lexer
3: 开始写自己的代码

但 enjoy 完全不需要,想深入研究的可以看我的博客:
https://my.oschina.net/jfinal/blog/3146036

2022-05-03 12:51

最新版本已添加该功能,称之为 "可选链操作符",用法如下:
user?.name
user?.getName()?.length()
a?.b?.c()?.d?.e?.f