2020-06-03 12:55

@macaque 看漏了,value.getClass().getDeclaredMethods() 这个可以的,赞

2020-06-03 11:42

@Jerry_for_java 配置这个是可以的,估计是别的原因,单步调试跟踪一下:
activeRecordPlugin.ContainerFactory(new OrderedFieldContainerFactory());

2020-06-03 11:41

@flyinkeke 你说的应该是对的。

如果他不需要分页数据的话,还可以这么用:
set("list", page.getList());
render(...);

但一般 set("page", page) 就挺好, js 在前端提取数据时注意取 page.list 就好

2020-06-03 11:39

@谢 Extension Method扩展作为 enjoy 的特色功能,这些年除了我自己用,还从来没有人反馈过在用

其实这功能用着挺爽的, 为 String 添加一个 toHtml() 多爽

还可以添加类似于 escape() toJson() 等方法

2020-06-03 11:38

@doubuxingle 赞,就是这么用的

2020-06-03 11:37

attrs 中的属性有可能与 getter 方法要表达的重合,例如你用 jfinal 的生成器为 model 生成了 base model, 这些 base model 中所有的 getter 方法都与 attrs 方法中的字段重合

当然,你的 ToJson 扩展在纯用法上是对的

2020-06-03 11:33

@cqztt

如果不是 maven 项目,可以参考这些:
https://jfinal.com/share/422
https://jfinal.com/share/786

但是强烈建议使用 maven 项目来打 jar 包,要方便得多

maven 早已普及,传统方式该淘汰了

2020-06-03 11:32

@cqztt 如果不是 maven 项目,可以参考这些:
https://jfinal.com/share/422
https://jfinal.com/share/786

但是强烈建议使用 maven 项目来打 jar 包,要方便得多

maven 早已普及,传统方式该淘汰了

2020-06-02 22:35

@北流家园网 重入型 json 转换这个事,太难想到了,以前从来没有人这么使用过

因此,绝大部分同学使用 4.9 版本也是没问题的

2020-06-02 22:10

改动极小,添加一个 boolean inUse 变量区分重入与非重入就可以了:
https://gitee.com/jfinal/jfinal/commit/561d7df88e786a823036c295d3a46a80f0ebd629

2020-06-02 22:10

@halason 刚刚已经改进了这个功能,支持 reentry 重入型 json 转换,这下完美了

版本号改成了 4.9.1 ,你可以通过下面的办法先用上:
https://jfinal.com/share/2093

以后升级也改不必改代码

谢谢你的反馈,这个问题挺重要。

最后,谢谢你这些年来对 jfinal 俱乐部的支持

2020-06-02 22:07

为什么非得要别人问你是什么错,你才肯提供呢?

网上搜索一下 "提问的艺术",先学会提问

2020-06-02 22:04

这种用法节省了代码,非常赞

有个小建议, Object ret = inv.getReturnValue() 还可以做得更智能一些,例如:
if (ret intanceof String) {
render((String)ret);
} else {
renderJson(ret);
}


这样改进的话, controller 中就可以这么来玩了:
public Ret doPublish() {
// 从param中获取name 和 age
if(StrKit.isBlank("name")) {
return Ret.by("msg", "名称不能为空");
}
if(StrKit.isBlank("age")) {
return Ret.by("msg", "年龄不能为空");
}

if (notLogin()) {
return "login.html";
}

return "index.html";
}

2020-06-02 18:25

上面给的解决方案,需要在 JsonResult.java 中添加如下方法:
public int length() {
return sb.length();
}

所以,当前情况下,最好还是你 copy 出这个模块的代码放在自己的项目中改写,然后用 me.setJsonFactory(...) 配置用上

2020-06-02 18:21

出现这个问题的原因,并不是因为新版本的 JFinalJson 的转换规则变了,而是因为 ThreadLocal 中共享的 JsonResult 在嵌套重入以后无法被共享

为了保障兼容性,JFinalJson 新旧版本的转换规则是完全一样的,你碰到的这问题不是转换规的范畴

我会找个好的设计解决这个问题