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

2018-08-10 17:18

@醉梦灬浮生 注意配置好 ehcache 的过期时间,不要永久存放验证码,参考 club 项目中的 ehcache.xml 中的某个过期时间配置

2018-08-10 16:30

@醉梦灬浮生 试试用 jfinal 中的 CacheKit.put(phone, ...) 去存,取的时候这样:
CacheKit.get(phone)

你的代码既然是跨域了,而 cookie 是与域名挂钩的,并且 session 依赖于 cookie 的实现,当你域名变了,那么 cookie 变了,session 中自然取不到值

2018-08-10 16:13

String phone 这个参数的值是什么? 单步调试一下

2018-08-10 16:11

路由问题一定要看文档,规则极其简单,已经没有可以回答的空间了:
http://www.jfinal.com/doc/2-3

从上面的文档中可以看到,表格中只有四种路由,不能再简单了

2018-08-10 15:53

init 方法中好像少了一个 arp.start(),所以你的 Db.update(sql) 这行代码执行应该有异常。 感谢分享

2018-08-10 15:48

@Krsguan jfinal 不支持这种路由,添加一个自定义的 Handler 将这个路由转换一下就可以了,参考 jfinal 的 com.jfinal.ext.handler 下面的一些实现类

2018-08-09 23:29

@受伤的蚂蚁 还有一个简单的办法,如果 data 是 map 类型的,可以用一下下面的表达式:
#(data[name]))

上面的用法,其中的 name 可以是动态的变量,但 data 这个是固定的一个变量名

2018-08-09 23:28

@受伤的蚂蚁 也就是将拼接后的 String 当成表达式再次求值,这个需要你做下指令扩展,例如扩展个 #eval 指令出来,或者试着做一个 shared method 扩展

#eval 指令比较好做,将里头的参数再次当成表达式求值即可

shared method 扩展需要获取到 Scope 对象中的值,需要使用一个 ThreadLocal 传递 Scope 过去,这个比较麻烦

2018-08-09 22:20

@ganglianhuo 使用 enjoy 时,有没有一种特别自由、熟悉的感觉? 表达式都是 Java 的用法