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());
2020-06-02 13:12
@路遥_美好人生 超着年轻,一定要去北、上、广、深、杭这些大城市去工作,小地方的机会要少得多
如果是南方人,就不要去北京,那边的环境太干燥,空气质量也很差,南方人会不太适应
以你目前的技术水平完全可以找一个很好的工作,要尽早参与到工作中来,不要等到学会了游泳才下水
以你当前的技术,除了前面讲的工作以外,你要更关注做产品,因为技术永远只是手段,用技术实现目标才是根本目的
2020-06-01 21:41
@路遥_美好人生 代码质量、结构完全不像是毕业两年的同学写的,再过两年,难以想象发展到何种高度
在技术好的同时,刻意培养些商业眼光或者商业敏感度,早日实现财富自由
2020-06-01 21:23
@tyroxyz 可能是你数据库配置的问题,这个警告信息与你自己的代码应该没啥关系
jfinal 也不会输出这类信息