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 新旧版本的转换规则是完全一样的,你碰到的这问题不是转换规的范畴

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

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 15:48

具体出了什么问题呢?

2020-06-02 14:37

异常信息不全

此外,异常信息中出现了 JettyServer, 显然打包方式就错了

正确的打 jar 包运行的方式需要下载本站首页右侧的 jfinal_demo_for_maven-4.9.zip

里头有一个目录叫:"启动说明/fatjar-打包部署方法",下面有一个文件叫:
"fatjar-打包部署方法.txt", 这个文件详细告诉了你如何打成 jar 包去运行

2020-06-02 14:34

进入 https://jfinal.com/my/feedback
点击右侧修改按钮,可修改这个贴子

2020-06-02 13:13

jfinal weixin 中有现成的例子可用:
https://gitee.com/jfinal/jfinal-weixin/blob/master/src/main/java/com/jfinal/weixin/demo/WeixinPayController.java

2020-06-02 13:12

@路遥_美好人生 超着年轻,一定要去北、上、广、深、杭这些大城市去工作,小地方的机会要少得多

如果是南方人,就不要去北京,那边的环境太干燥,空气质量也很差,南方人会不太适应

以你目前的技术水平完全可以找一个很好的工作,要尽早参与到工作中来,不要等到学会了游泳才下水

以你当前的技术,除了前面讲的工作以外,你要更关注做产品,因为技术永远只是手段,用技术实现目标才是根本目的

2020-06-02 13:08

贴代码注意点击左上角的 "代码语言" 下拉框,选择 java

否则你贴出来的代码丢失大量信息,你仔细看看你贴的什么

2020-06-01 21:41

@路遥_美好人生 代码质量、结构完全不像是毕业两年的同学写的,再过两年,难以想象发展到何种高度

在技术好的同时,刻意培养些商业眼光或者商业敏感度,早日实现财富自由

2020-06-01 21:23

@tyroxyz 可能是你数据库配置的问题,这个警告信息与你自己的代码应该没啥关系

jfinal 也不会输出这类信息

2020-06-01 21:18

看了下代码,非常工整干净,毕业两年代码能写这么好,前途不可限量,非常赞

2020-06-01 17:43

@lyh061619 这个优化是非常值得的,因为现在越来越多的 jfinal 项目是当成 json server 端来使用的

性能大幅提升,用户体验更好。官方新增的字段名转驼峰支持,对于使用下划线 mysql 字段以及 oracle 数据库是很大的福音

2020-06-01 17:19

发送 OPTIONS 请求, 而非 GET、POST 是什么玩法?