2018-12-14 12:46

enjoy 3.5 虽然在 pom.xml 中的编译级别是 jdk 1.7,但 SyncWriteMap.putIfAbsent(...) 这个确实用到了 Java 8 的 API

不是不去兼容 jdk 1.7, 而是 eclipse 没提示这个问题,编译也通过了,所以出现了你现在碰到的这个问题

建议几种解决办法:
1:拿到 enjoy 源码,改一下其中的几处 putIfAbsent,然后 mvn clean install 安装到你本地 maven 使用

2:退回到使用 enjoy 3.4,当然这个不建议,因为 3.4 的 ClassPathSource 有一个 bug,当然,你自己拿到 enjoy 3.5 的代码代替它就可以了

3:使用 Java 1.8

2018-12-14 12:42

@shenyao 也可以在配置文件中配置:
undertow.contextPath=abc

2018-12-14 12:42

这个功能好多人在提需求了,楼主动作超快,解决方案也十分简洁,收藏加点赞

2018-12-14 12:36

配置 undertow.hotSwapClassPrefix=...
将需要热加载的类的前缀包含进来,如果有多个前缀,用逗号分隔

jfinal 默认已被添加, 例如:
undertow.hotSwapClassPrefix=com.jfinal.

看一下 HotSwapResover.java 这个类

2018-12-14 12:34

可以用 Kv 或者 Ret 工具类:
Kv kv = Kv.by(a, a).set(b, b).set(c, c)....;
setAttr("kv, kv);
render(xxx.html);

不过你这个建议挺有意思,jfinal 3.6 考虑添加一个:
render(String template, Object... paras) 这样的方法来支持你这种用法,还得再权衡

2018-12-13 22:56

@Aizen 返回到 inv.getReturnValue()

2018-12-13 22:04

@Aizen 具体啥意思? inv.setReturnValue(...) 试一下

2018-12-13 22:03

@Sohnny 删除 Jetty 依赖,在文档中有强调

2018-12-13 22:02

你可以通过单步调试的方法,找出其中不能工作的那条数据,其中有一个参数是错误的

2018-12-13 22:02

Db.batch(...) 这个方法,是一条 sql ,然后适用于后面的多组参数,所以这多组参数全都要与那条 sql 可以配合

例如 sql 中要求两个参数都为 int:
insert into xxx ? , ?

假定你一共插入 10 条数据,其中有 9 条数的参数都没问题,但有一条数据的参数,其中一个参数不是 int , 而是别的类型,这就出错了

简单一句话, Db.batch 中的那条 sql , 要可以单独与每组参数配合着用

2018-12-13 21:56

文档中还说明了:
me.setBaseTemplatePath("webapp");
me.setToClassPathSourceFactory();

这个应该是你没仔细看

2018-12-13 21:56

@陈本布衣 3.1 到 3.5 有变动的地方基本就是改改类名改改方法名,5 分钟内完成升级,值得拥有

2018-12-13 21:52

删掉 servlet 的那个依赖,与 jfinal undertow 自带的 servlet 依赖有冲突,不是让你删 servlet 代码

2018-12-13 21:51

同学 @邶风 的方案最好,用全局拦截器,在 inv.invoke() 这行代码的前后安插时间点,记录其差值即可

如果希望记录静态请求的时长,用 handler 就好,方法与拦截器类似

2018-12-13 21:50

程序有问题,单步调试定位一下

此外,redirect("/mms/mmsSendResult.html") 肯定是错误的, redirect 重定向到一个 action