2019-01-29 21:42

JDK 8 相对于低版本 JDK 的这个行为,还影响到了 Model.findById(...) 、Model.deleteById(...)、 Db.findById(...) 这三个方法,jfinal 3.6 改进了这里,避免了 JDK 8 带来的影响

对于 findFirst 来说,目前的解决办法只能是上个回复里头的方法。

2019-01-29 21:39

在 JDK 8 之下,如果方法参数是 Object ... paras 类型,并且传入的参数值是通过调用方法获取的,并且这个方法返回的是泛型的话,就会出现这个类型转换异常问题

也就是说要同时满足下面几个条件才会出现:
1:JDK 版本是 8 或更高
2:方法原型中带有一个 Object... paras 参数
3:传入参数时是方法调用,例如 record.get("title")、getAttr(...) 等等
4:第三条中的方法调用的返回值类型是泛型,例如上面的 record.get(...) 与 getAttr(...) 返回值类型都是泛型

解决办法极其简单,下面的方法任选其一:
1:使用强制类型转换,例如:findFirst(..., (Object)getAttr(...));
2:引入一个中间变量,例如:
Object para = getAttr(...);
findFirst(..., para);

解决方案都是为了消除 JDK 8 的 Object... 传参类型错误的问题,低版本 JDK 没有这个问题。

高版本的 JDK 或许是为了提升性能才有了这个变化

2019-01-29 17:16

这么说吧,找一个已经被加载到 class path 的任何 java 类, 然后看看这个 Java 类为啥可以被加载到 class path,然后尝试将 model 与那个 java 类同样去对对待即可

2019-01-29 17:15

model 没加载到 class path 中这个问题我也难以回答了

2019-01-29 17:04

代码不全,这个不好猜

存储过程要这么来用:
Db.execute((connection) -> {
CallableStatement cs = connection.prepareCall(...);
cs.setObject(1, ...);
cs.setObject(2, ...);
cs.execute();
cs.close();
return cs.getObject(1);
});

2019-01-29 16:57

传字符串的好处是避免目标类中的 static 型的东东不会被别的 class loader 加载到,从而可能引发一些额外的问题

感谢分享

2019-01-29 16:55

做好 arp.addMapping(...) 工作,如果不想做的话,用生成器自动化接管

生成器在首页 jfinal demo 有下载

2019-01-29 15:25

应该是事务并未正确添加,如果用的 @Before(Tx.class),则在 Tx.java 中添加断点跟踪,否则在 DbPro.tx(...) 中设置断点跟踪

2019-01-29 15:19

看一下 @海哥的 jboot 与 jpress,里面应该是有 docker 集成的:
https://gitee.com/fuhai/jboot
https://gitee.com/fuhai/jpress

2019-01-29 15:18

客户端主动断开连接引起的异常, jfinal 3.6 添加了几行代码避免了这个异常,关注一下这几天要发布的新版本,升到 3.6 即可,整个世界清静了

2019-01-28 22:09

这个问题肯定是与 jfinal 无关的,查查权限之类的问题

2019-01-28 15:00

@wangerxiao 大多数情况用 jfinal 提供的 Cron4jPlugin 就够用了

2019-01-28 14:58

@红星 如果觉得 @NoUrlPara 麻烦,可以在 controller 中调用一下:
checkUrlPara(0);

上面代码的 0 表示 urlPara 个数为 0,如果不是 0 则报 404,你可以指定成自己需要的,例如:
checkUrlPara(3);

上面的是允许 3 个 urlPara 存在

2019-01-28 12:45

出现上述错误,很明显还在使用老的启动代码: JFinal.start(...)

老的启动代码对 Jetty 有依赖

2019-01-28 12:44

恰恰相反,无论是开发还是部署,都需要先将 jetty 依赖删除干净

此外,启动代码是 UndertowServer.start(...)