2018-08-13 13:42

@wesleyxw 感谢回来分享, handler 可以实现那些更加底层的功能,在拦截器以及 controller 实现不了功能时,用 handler 可以解决

2018-08-13 11:55

@syjll 我上面指的删除项目所有文件,是指删除项目根目录下的所有文件,不是指 src 子目录下面的

2018-08-13 11:54

@syjll 是标准的 maven 项目就好办了,删除项目中所有的文件,只留 pom.xml 文件以及 src 目录

重新导入一次 eclipse , 让 ecilpse 重新生成它的配置文件与目录即可

2018-08-13 11:53

用 Handler 转换一下,转成 jfinal 路由支持的 /a/b-c-d 即可

在 com.jfinal.ext.handler 中有一些 handler 的便子,本质就是改变一下 target 参数,然后用转换后的 target 去找 action,大致:
public void handle(String target, ....) {
target = 转换成jfinal支持的路由(target);
next.handle(target, ...);
}

2018-08-13 11:10

问题应该出在你的 doPjax,让其仅仅是一个 a 超链接就可以了,不要用 onclick

2018-08-13 11:05

很可能是 Default output folder 配置错误:
http://www.jfinal.com/doc

如果你是标准的 maven 项目,不用配置上面的那个

2018-08-12 17:14

@zerov findByCache 优先从缓存中取数据,取不到数据才去数据库查询

而从缓存取数据必须要有一个 key, key 就是从数据库取数据的一把钥匙

2018-08-12 16:30

感谢你的分享,同时也感谢你对俱乐部的支持 :)

2018-08-12 10:58

beanGetValueToMap 这个方法没有分享出来,里面怎么写的?

此外, JFinalJson 只有几百行代码,当初主要是为了在某些场景下对第三方无强制依赖而开发的,也没有做深入的性能优化,因此 json 模块里头还提供了 fastjson、jackson 两个第三方实现,但需要引入第三方 jar 包

2018-08-12 09:39

在这里改
http://www.jfinal.com/my/feedback

注意右侧的修改链接 回复删除

2018-08-11 23:22

@EATI001 拦截器就是普通的 Java 方法调用,并没有使用反射,并且拦截器是单例的,在系统启动过程中一次性创建并装配好。 性能极高

这点代码每秒运行应该是百万至千万级别的量,性能损耗可以完全忽略不计

2018-08-11 17:39

做个全局拦截器处处理一下:
public class MyInterceptor implements Interceptor {
public void intercept(Invocation inv) {
inv.invoke();

if (inv.getController().getRender() == null) {
Object ret = inv.getReturnValue();
if (ret == null) {
inv.getController().renderNull();
}
}
}

}

最后再配置一下即可:
me.add(new MyInterceptor());

当然,你的这种情况很可能不需要判断 inv.getReturnValue(),核心方法简化成下面试试:
public void intercept(Invocation inv) {
inv.invoke();
if (inv.getController().getRender() == null) {
inv.getController().renderNull();
}
}

2018-08-11 16:17

在 controller 中设置断点,单步调试一下就清楚了

2018-08-10 17:20

jfinal 只负责将 sql 与 para 交给底层的 JDBC 处理,而 sql 与 para 的正确性需要你自己去保证

显然你的程序生成了错误的 sql 与 para