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

2022-04-21 22:43

jfinal 4.9.23 的 #para 指令新增了对 like 的支持,map 传参用法如下:
select * from t where title like #para(title, "like")
Java 代码如下:
Db.template(sqlKey, Kv.of("title", "article title here").find();

int 传参用法如下:
select * from t where title like #para(0, "like")
Java 代码如下:
Db.template(sqlKey, "title 参数值").find();

#para 指令还支持另外两种模式:
#para(xxx, "%like")
#para(xxx, "%like%")

此外还支持 in 参数:
select * from t where id in #para(idList, "in")
java 代码如下:
List idList = service.getIdList();
Db.template(sqlKey, Kv.of("idList", idList).find();

最终一个 #para 实现了三种传参方式:传统 + like + in

2022-04-21 22:42

猜测是一个 getBigDecimal(int) 方法,而调用的时候传入了 long 型参数:getBigDecimal(long)

但你提问信息中没有透露是哪里抛出的这个异常,今天心情不算差,暂且为你猜了一下

2022-04-21 22:39

ajax 获取到的数据是 data={name:"123"} ,那后续全是前端的事了

后端看能不能带上对象结构,传回来: data={o: {name:"123"}}

2022-04-19 21:07

@北流家园网 #(o.ename??) 在 o 不为 null 的时候,不需要??操作符,不会抛异常

a.b.c.d.e 这种表达式的最后一级允许 e 为null,但前面的几级不允许,但是多级可以只需要一个 ?? 操作符,例如:
a.b.c.d.e ??

原因之一是为了减少出开发者手误的概率,还有一些别的原因,有点不记得了,当时是有一些别的考虑,好像有性能的考虑,不太记得了

2022-04-13 00:54

在 BaseController 中封装一个 getAttrs() 方法返回所需数据,然后这样用:
String html = renderToString("common.html", getAttrs());//得到模板渲染后的html
//对html做额外处理。。。
renderHtml(html);//输出html

2022-04-05 21:54

@山东小木 红色的有点刺表我调成了这个色:D55FDE。该色与 One Dark Them 的java 关键字使用的是同一个颜色

除了 D55FDE 你还可以试试这几个色:
E5C07B 黄色,不太显眼
D19A66 黄色,不太显眼
E06C75 淡红,一般般
EF596F 太红
FF6347 更红,最开始使用的

2022-04-05 20:30

@zhenquande 没错没错,就是这么玩的,我一般打开两到三个 vscode

现在玩 idea 也是同样的方式 文件 =》 打开。如果以前打开过,就直接 文件 =》 打开最近的文件