2020-03-17 13:33

@微笑 单步调试,找出用纯 JDBC 与用 jfinal 之间的差别,然后改一改就可以

检查一下是不是 jdbcUrl 连接中 encoding 的配置问题

理论上来说 JDBC 与 jfinal 的执行情况是完全一样的,因为 jfinal 仅仅只是转调了 JDBC,并未做任何干预

2020-03-16 21:44

@foam103 带 .ws 就可以不需要 UrlSkipHandler,因为带 "." 字符的 url 不会被 jfinal 框架当成 action,所以自然也就跳过去了

2020-03-16 18:37

@WJME 在 jfinal 中使用任何第三方,不一定需要使用插件机制,而是直接用上即可

插件机制不是必要的

2020-03-16 18:36

@IT届的小学僧 你的代码中的 Kv con 这个变量已经是正确的用法,"传一个值加一个数组" 这件事已经做好了,剩下的只是在 sql 模板中用上它即可

你可以用 #(...) 指令输出这个变量和数组进行验证

因此,你的问题本身就不存在

2020-03-16 18:34

可以试试用纯 JDBC 来试验一下,工作正常以后再弄到 jfinal 中使用,试验方法如下:
Connection conn = DbKit.getConfig().getConnection();
以上代码先获取 JDBC 的 Connection 对象,然后用它来执行你的 sql ,大概率也是会出问题的。 然后你再调整用法, 确保 JDBC 下可以正常工作, 那么也就确保了 jfinal 下也可以工作

因为 jfinal 仅仅只是对 JDBC 做了一层极薄封装

2020-03-16 18:32

jfinal 并未干预过这个过程,肯定是与 jfinal 无关的

我从来没这么用过,给不到建议

2020-03-16 18:31

可以被注入, 但你要先确保 TeacherService 这个对象本身也是被注入的

具体来说就是你的 TeacherService 需要放在 Controller(Interceptor 也可以)中,像这样:
public class MyController extends Cotroller {
@Inject
TeacherService teacherService;

...
}

以上这样的用法,控制器首先被入 TehacerService,在注入 TeacherService 的时候其内部的 UserDao 才能被注入

简单来说,注入需要有一个触发的时机,这个时机是从 controller 传递过来的

2020-03-16 18:27

业务层的拦截器触有两种方法,一种是在 controller 中通过 @Inject 注入业务层,另一种是通过 Aop.get(XxxService.class) 创建业务层对象

以上两种方式才能让拦截器被应用上,否则拦截器是无法被触发的,检查一下

2020-03-16 12:14

尝试配置 /etc/my.cnf , 指定 mysql 的数据库数据目录,我记得是配置 datadir 这个变量,具体你要去网上搜一搜

2020-03-16 11:47

@WJME quartz 太庞大,要引入很多 jar 包, 而 cron4j 则十分轻量小巧

并且,quartz 的使用本质与 jfinal 是无关的,只要会用 quartz 就可以用了,所以 jfinal 也无需对 quartz 进行过多干预

2020-03-16 11:45

第一个 isContains 缺少右扩号,注意扩号要匹配好

2020-03-16 11:36

@Jeanna plugin management 标签会引发大量的 jar 包下载

2020-03-16 11:35

比官方文档在详细,已经在官方文档中添加了对本篇分享的链接,感谢分享

2020-03-16 11:29

@zz210891470 renderJson 转换时有默认格式,可以配置:
me.setJsonDatePattern("yyyy-MM-dd");

上面是配置默认行为,还可以临时指定,例如:
String jsonString = Json.getJson().setDatePattern("yyyy-MM-dd").toJson(object);
renderJson(jsonString);

上面的代码,先临时设置 datePatten,然后转换出 String 类型的 json 结果,最后传 递给 renderJson(jsonString);

2020-03-15 23:29

注意看一下有关 json 转换的文档:
https://jfinal.com/doc/12-1

一般来说,你可以通过 model.put("taksargs", taskargs) 来放入数据,然后再转换