2020-05-21 14:54

@david-J 建议走阿里云的 maven 库,国外的库太慢了

2020-05-20 14:46

可以使用 @ActionKey 注解

此外, controller 中的代码应该要极少,所以一般无需拆分。如果想拆分,先警惕一下是不是业务逻辑写在了 controller 中

绝大部分代码应该放在 service 中

2020-05-18 14:36

贴出代码看看问题,原贴可以修改

2020-05-18 12:32

直接 new MessageService() 那么用在 MessageService 中的拦截器就不会生效,全局拦截器也不会生效

Aop.get(...) 主要有两个作用:
1:判断目标类是没有拦截器,如果有的话就生成代理对象,让拦截器生效
2:向目标类中使用 @Inject 的属性注入依赖

多看下文档

2020-05-18 12:28

@chance_xym sysout 不可靠, jfinal.com 官网的定时任务用的是插入数据库的方式:
// 每次调度启动时,向 task_run_log 写日志,用于检查调度的时间是否与预期的一致,避免出现 bug 却不知道
Record taskRunLog = new Record().set("taskName", "PageViewUpdateTask").set("createAt", new Date());
Db.save("task_run_log", taskRunLog);

事先建一个表:
task_run_log, 字段名有:id、taskName、createAt

注意:写日志代码一定要放在最前面,否则 task 运行如果有异常,这条日志就不会写入

我怀疑你的 task 已经被运行,但有异常,所以你察觉不到其已经运行。Cron4jPlugin 我用了好多年,从来没有碰到过问题

2020-05-17 19:58

在被调度的第一行代码处做日志确认一下

2020-05-17 19:57

注入必须是从 controller interceptor 为起点才能注入

否则要使用 Aop.get 或者 Aop.inject

注意看文档

2020-05-16 22:09

import 一下 DruidPlugin

2020-05-15 15:10

这个纯粹是路由的问题,检查一下路由映射

jfinal 路由很简单,只有四种类型,看看文档 10 分钟内全部掌握

2020-05-15 10:26

@chcode 这个与空合操作还不同, 空合是对 "是否为 null" 起作用

而这位同学的建议是对 "是否为 true" 起作用

2020-05-15 10:25

这个想法很好,但有些细节还需要考虑清楚

有个疑问,你建议的 foo ?: 'no' 等同于 #( foo ? foo : 'no' )
为啥不是:
foo ?: 'no' 等同于 #( foo ? '' : 'no' )

因为这个与你后面建议的 foo ?= 'yes' 等同于 #( foo ? 'yes' : '' ) 才是一致的

2020-05-14 19:31

3.4 升到最新版本变化并不大, 除了 Aop 功能以外,其它都是细致打磨

如果不想升级想用 Aop,需要将 com.jfinal.aop 与 com.jfinal.proxy 这两个包下面的文件复制到你的项目中才能使用

2020-05-14 19:29

将支持分布式事务的 DataSource 直接传递给 ActiveRecordPlugin 即可

ActiveRecordPlugin 构造方法有很多重载,其中 DataSource 就是其中之一

2020-05-14 16:36

@opal 实现这个功能以后的最终目的是什么?

2020-05-14 11:43

既要让模板函数可以被调用,又要可以输出模板函数的定义本身,这个功能确实没有

这个需求第一次碰到,java 语言自身也没这个功能

建议讲出更深层的目标,或许通过其它路径可以解决