2018-10-14 10:17

功能性代码建议写在 Service 层中,而不是 Controller。 感谢分享

2018-10-14 10:16

关键在于配置好: ApiConfigKit.putApiConfig(apiConfig), 否则一定会报 NullPointerException

注意看文档: https://gitee.com/jfinal/jfinal-weixin/wikis/JFinal-weixin%E4%B8%AD%E7%9A%84WeixinConfig%E9%85%8D%E7%BD%AE

此外,jfinal-weixin 项目中本身就包含了 demo ,照抄后修改下配置即可:
https://gitee.com/jfinal/jfinal-weixin/tree/master/src/main/java/com/jfinal/weixin/demo

2018-10-14 10:13

三个 input 的 type 都不对,改成: type="radio"

三个 input 的 name 也都不对,改成完全一样,例如改成:qjt.type。 数据库弄个 type 字段,表明是请假的类型,而不是三个字段

最后,单步调试看数据据,这个纯 html 问题

2018-10-12 17:51

检查一下自己的代码有没有
Connection conn = getConnection() 这样的代码,如果有的话要自行关闭:
conn.close();

此外,建议换上 DruidPlugin 或者 HikariCpPlugin, C3p0Plugin 太老了很久没更新了

2018-10-12 17:47

我再稍微延展一下,为了提升性能以及简洁性,jfinal 的注入目前只针对当前类,而不会注入当前类的父类中的属性

如果确实有对父类注入的需求,建议使用:
XxxService service = Aop.get(XxxService.class);

如上所示,Aop 这个工具类可以在任何地方创建并做注入动作,如果还是不满足这样来做,可以通过继承 AopFactory 这个类,覆盖掉其中的 inject 方法,将其中只针对当前类注入的 getDeclaredFields() 再添加一个针对父类字段的获取即可

一般使用前面建议的 Aop.get(...) 就好,因为绝大部分情况都是注入当前类,而不对父类进行注入

2018-10-12 17:44

应该是你的 @Inject 注解来自于别的 jar 包,检查一下 import 是不是 com.jfinal.aop.Inject

2018-10-12 16:18

参考文档来做:
http://www.jfinal.com/doc/3-3

2018-10-12 13:37

jfinal 在 2.0 版本的时候就有 model 自动化生成 getter、setter 功能了,只要修改了字段,一键极速更新到最新版本,getter、setter 跟着变,就连 addMapping(...) 映射 Model 的也跟着变

action 查询获取数据的时候,为啥要先 log 输出再一个在前端展示呢? 直接展示就可以了,展示的时候会调用 model 的 getter 方法

每次修改模板导致重启,应该是你将模板放在了 src/main/resoures 目录下面,由于这个目录下面的所有资源会被 java 编译至 target/classes 下面,而 jfinal 是通过监控这个目录下面的文件是否则修改而重启的,这的确倒是一个问题,我这里先做下备忘,下一版本改进一下这里,这个改进很容易,只需要监控 .class 后缀的就可以了。这个反馈相当重要,因为后续的 jfinal 将向微服务迈进,所以正好模板要放在 src/main/resources 下面

感谢你反馈这么多,绝大部分反馈还是对 jfinal 用得不熟导致的,建议看一下 model 生成的文档:
http://www.jfinal.com/doc/5-4

在使用时,可在首页下载 jfinal-3.5-demo.zip 这个文件,里面有一个生成器,直接改改参数就可以用在你自己的项目中了

使用 jfinal 开发的项目 200 多张表是很常见的情况,有个别情况有超过一千张表的,用生成器生成 model 也就 2 秒左右,此外,复杂 sql 管理要全用 jfinal 的 sql 管理功能,用起来爽得没法说了:
http://www.jfinal.com/doc/5-13

2018-10-12 10:17

我一直以为你是在 Handler 中做 301,在 Handler 中做 301 才需要 HandlerKit.redirect301

2018-10-12 10:17

@Tom_52 你在 controller 中要做 301 不要这么麻烦,一行代码的事,现成的:
redirect301(url);

2018-10-12 09:58

这段代码是在哪里写的? 如果是 controller 中,最后添加一行代码:
renderNull();

2018-10-12 09:56

异常中已经没有了 Jetty,也没有 jfinal 的影子,而我对 cxf 也不熟悉,建议看一下 cxf 的官方文档,找到一两个使用的 demo ,参考着用

2018-10-12 09:45

@lyq027 一次映射,到处适用,用起来很方便,而且避免了在 @Inject 注解参数中写死,便于将来切换实现

2018-10-12 09:22

如果 @Inject 用在接口上,下面两种方法选择其一:
1:在 @Inject 中指定被注入的实现类
@Inject(ServiceImpl.class)
Service service;

2: 事先映射好接口与实现类的关系
public void configConstant(Constants me) {
Aop.addMapping(Service.class, ServiceImpl.class);
}

然后用的时候可以像以往一样了:
@Inject
Service service;

此外,Aop.addMapping(Class, String) 第二个参数还可以是 String,那么你就可以通过外部配置文件来做映射了,例如外部配置文件中是下面这样:
Service=ServiceImpl.class

映射的时候可以这样:
Aop.addMapping(Service.class, PropKit.get("Service"));

上面的配置方法,可以通过修改配置文件来改变 Service 的实现类

2018-10-12 09:21

首先要选择是用 tomcat 还是 jetty

从异常来看你的项目中有 jetty 依赖,但你用的是 tomcat 启动,所以要将 jetty 的东西删干净

如果你用的是 Jetty ,就不能用 tocmat 来启动。同时要注意将 jetty-server 升级到 2011.8 这个版本,jfinal 升级到 3.5 版