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
@halason 刚刚已经改进了这个功能,支持 reentry 重入型 json 转换,这下完美了
版本号改成了 4.9.1 ,你可以通过下面的办法先用上:
https://jfinal.com/share/2093
以后升级也改不必改代码
谢谢你的反馈,这个问题挺重要。
最后,谢谢你这些年来对 jfinal 俱乐部的支持
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:20
@halason 确实有问题,原因是你的套嵌调用 JFinalJson.toJson() 的用法,在第二次进入 toJson 方法时,重用了 ThreadLocal 中的 JsonResult
这种问题应该是十分罕见的,你先通过继承 JFinalJson 来解决一下:
public class MyJFinalJson extends JFinalJson {
@Override
@SuppressWarnings({"rawtypes", "unchecked"})
public String toJson(Object object) {
if (object == null) {
return "null";
}
JsonResult ret = TL.get();
if (ret.length() > 0) {
JsonResult jsonResult = new JsonResult();
// 优先使用对象级的属性 datePattern, 然后才是全局性的 defaultDatePattern
String dp = datePattern != null ? datePattern : getDefaultDatePattern();
jsonResult.init(dp, timestampPattern);
ToJson toJson = kit.getToJson(object);
toJson.toJson(object, convertDepth, jsonResult);
String jsonString = jsonResult.toString();
jsonResult.clear();
return jsonString;
}
try {
// 优先使用对象级的属性 datePattern, 然后才是全局性的 defaultDatePattern
String dp = datePattern != null ? datePattern : getDefaultDatePattern();
ret.init(dp, timestampPattern);
ToJson toJson = kit.getToJson(object);
toJson.toJson(object, convertDepth, ret);
return ret.toString();
}
finally {
ret.clear();
}
}
}
通过上面的方式扩展以后,再配置一下就好:
me.setJsonFactory(() -> new MyJFinalJson());