2019-12-26 10:20

@Dull 这种坑就需要仔细调试才能找出来了

昨天我已经看到一个奇怪的地方,你的 #(article.cover) 居然输出了 null , 而 enjoy 的输出指令碰到 null 值时是不会有任何输出的

所以,昨天应该从我上面这个发现着手,应该要想到 article.cover 的 toString() 是 "null"

2019-12-26 10:18

@nani 你现在用的 jfinal.com 官网就是用的 ehcache 来缓存 sessoin 的,在重启以后你照样可以登录,数据不会丢失,这里你要检查两个问题:
1:ehcache 存放文件有一个目录,该目录你要找到,检查一下是不是有什么机制将你的文件删掉了
2:检查 ehcache.xml 中的配置,如果需要缓存重启以后可以保留,需要配置中有下面的东东:
diskPersistent="true"

2019-12-25 23:51

很可能是作用域的问题,注意在你的指令里头使用 scope.set(key ,value),不要使用 scope.setLocal(...),也不要使用 setGlobal(key, value)

前面那个会自动处理作用域的问题,后面两个一个是在顶层直接入变量,另一个是在底层直接放变量

你碰到的这个问题,可以在 Scope 的 setter、getter 方法中设置断点,一下就明白了

我估计你在 ArticelDirective 中使用 Scope 时出了问题,将这块代码贴出来吧

2019-12-25 20:48

在 init 方法中设置一个断点,然后当断点停下来的时候查看调用栈,就知道是谁在调用了,并且流程也清楚了

2019-12-25 18:17

jfinal 俱乐部有不少接项目的小伙伴,而且很多项目代码是现成的,改改就完事:
https://jfinal.com/club

2019-12-25 17:30

那种是用 context path 来区分不同 webapp 的, undertow 也支持这种用法,但需要对它进行配置,你试试 UndertowServer.create(...).configWeb(...) 来进行配置,jfinal 文档中有关于 configWeb 的用法

不建议这么来用,而是让不同的项目跑在不同的 jfinal-undertow 下,使用不同的端口号,最后使用 nginx 来反向代理一下这所有的项目,很方便

2019-12-25 15:53

@chcode 知道扩展 DbPro, 看来是高手啊, 赞

2019-12-25 15:32

@chcode 我感觉你说的值得深入研究,得仔细看 mysql 官方文档

2019-12-25 15:31

@也许这就是萌新吧 具体怎么加的,去个人空间可以编辑这篇文章,将添加的方法追加进去

这个知识对后来者很有用,我也想知道具体的加法,好多年没用过本地 jar 包了

2019-12-25 15:05

@也许这就是萌新吧 这个就奇怪了,检查一下 package.xml 与 pom.xml , 会不会是配置有误?

再一个重点:要仔细分析异常信息,异常说找不到 BController,应该还有别的信息可以看

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(...);