2019-12-25 15:02

arp.setTransactionLevel(...) 只对开启事务的地方有影响,例如 Db.tx(...)、@Before(Tx.class)

其它用法没有干预用了 mysql 默认的行为

你先用 Db.tx(...) 解决一下吧,你这个需求以前没碰到过,先备忘一下,以后考虑添加支持

2019-12-25 14:44

用的 undertow,这种情况要配置一下:
undertow.hotSwapClassPrefix=cn.jbolt.

注意看文档中的说明:
https://jfinal.com/doc/1-5

有两种配置方法,任选一种。

这个只会出现在开发的时候,在部署时这个配置是被忽略的,无任何不良影响

2019-12-25 14:43

@chcode 没用 Tx.java 需要用 Db.tx(...) 来应用这个参数

2019-12-25 14:39

@IT届的小学僧 按理说有问题是会抛出异常的,检查一下你是不是有 try catch 将异常捉住了并没有继续向外抛出,注意拦截器也要检查

2019-12-25 14:38

看一下源码 Tx.java, https://gitee.com/jfinal/jfinal/blob/master/src/main/java/com/jfinal/plugin/activerecord/tx/Tx.java

第 62 和 75 行,已调用 setTransactionIsolation(...);

2019-12-25 14:12

@IT届的小学僧 数据格式不对,或者某些数据的字段数量少了或都多了,或者字段的类型对不上

建议你调试一下,确定是哪条数据的问题

2019-12-25 14:11

arpMsSql 对象中的 Engine 使用的是 ClassPathSourceFactory,该组件会以你的 class path 与 jar 包中的根目录为根去找模板文件

而你配置了 MsSql.setBaseSqlTemplatePath(PathKit.getRootClassPath()),这里假定你的 PathKit.getRootClassPath() 值为 D:/sql,那么最终将会去你的 class path 下面的 D:/sql 或者 jar 包中的 D:/sql 中去找模板文件

而这两个目录显然是不存在的

在 arp 中一般不建议配置 setBaseSqlTemplatePath ,而是直接 addSqlTemplate 的时候带上以 class path 为根的相对路径

下载首页的 jfina_demo_for_maven.zip,里头有实际的用法,照抄即可

2019-12-25 14:08

@无鱼 在配置 me.setToSlf4jLogFactory() 完成以后,剩下有关 slf4j 的依赖与配置就完全导向 slf4j 的官方文档了, jfinal 只是将功能移交给了 slf4j

按照 slf4j 的文档来添加它的依赖,以及添加它的配置文件,使用的时候这样:
Log log = Log.getLog(...);
log.xxx(...);

2019-12-25 14:04

没在 sql 之中这么玩过 tx_isolation , 建议你找找 mysql 文件,这里头可能有一个优先级的问题

2019-12-25 14:02

这个分享对 docker 环境下使用有价值,后来者可以少走弯路,谢谢你的分赞

2019-12-25 14:00

配置好日志,如果有异常信息就会输出,根据异常解决

我估计是有些数据存入的时候有异常,但异常没输出

2019-12-25 13:59

@liugz 路由配置还是原来的配置方法, 在 handler 中的 String target 变量就是 url 中去除掉域名、问号挂参后的剩余部分

通过改变 target 参数,让其可以对应到 controller 的 action 就可以了,对 handler 进行单步调试一下

2019-12-25 12:52

jfinal 这么设计路由有很多考虑,比起你需要的那种路由有很多优势。具体原因,以往谈论过很多,就不再重复

没有完美的设计,只有利弊权衡之后的选择

2019-12-25 12:49

jfinal 路由不支持这种风格,可以改成下面的几种形式来解决,任选一种:
1:www.abc.com/callback?nonce=xxx&appid=APPID
2:www.abc.com/callback/$APPID$?nonce=xxx

如果这个 url 风格是被强制要求不能改变的,也可以通过一个 handler 来转换去实现你要求的功能,这里只给出一个演示代码,你自己根据具体需求修改一下:
public class CallbackUrlHandler extends Handler {
public void handle(String target , HttpServletRequest req, HttpServletResponse res, boolean[] isHandled) {
if (target.endsWith("/callback")) {
String APPID = target.substring(0, target.indexOf("/callback");
target = "/callback" + APPID;
}
next.handle(target, req, res, isHandled);
}
}

上面代码的主要逻辑就是将 /$APPID$/callback 的形式转化成 /callback/$APPID$ 的形式

在 controller 中通过下面的代码可以获取到 APPID 值:
String appId = getPara();

通过下面的方法可以获取 nonce 值:
String nonce = getPara("nonce");