2017-07-04 18:32

jfinal template engine 有一个 baseTemplatePath,如果不设置的话,默认就是项目的 webapp 根目录,这是一个关键点

另一个关键点是 #include(fileName) 中的 fileName 以 "/" 打头时是从 baseTemplatePath 为起点去找模板文件,否则是与使用 #include(...) 指令的模板文件同级目录为起点开始找

2017-07-03 23:06

添加 toString() 方法对调试程序更加友好,jf 也时不时在一些经常调试的对象上添加 toString(),感谢你的分享

2017-07-03 22:25

@九块腹肌进先生 感谢你的支持

2017-07-03 22:13

action 层的拦截器,能够拦截对 action 的请求,所以前提是请求找到了一个对应的 action

如果一个 url 请求过来,连 action 都没有找到,也就不存在所谓的拦截器了,因为控制层的拦截是与 action 紧密联系的

如果要处理 action 不存在的 404,可以用一个 Handler,然后在 Handler 中使用:
Action action = JFinal.me().getAction(target, isHandled);
if (action == null) {
可以确定是 404
}

2017-07-03 22:09

日期格式可以配置:Json.setDefaultDatePattern(...)

2017-07-03 22:06

缺少 druid 的 jar 包, class not found 是 java 基础

2017-07-03 11:52

@hzw jfinal 手册里面都有,复杂 sql 写天 sql 文件之中,看下 jfinal 手册中的 sql 管理功能

2017-07-01 20:17

InterceptorStack 就是用来将你的多个拦截器组合成为在外部看来是一个拦截器,用的时候当成一个拦截器

2017-07-01 20:17

用 InterceptorStack 就几行代码的事:
public class UserSongLikeValidator extends InterceptorStack {
public void config() {
addInterceptors(new UserIdValidator());
addInterceptors(new UserSongLikeValidator();
}
}

用的时候这样:
@Before(UserSongLikeValidator.class)

不存在研究一说,继承 InterceptorStack 之后,eclipse 会自动提示你要实现哪个方法,实现方法后,在里面添加两行代码即可打完收工

2017-07-01 14:08

@九块腹肌进先生 基本可以确定,数据根本没到服务端

2017-07-01 10:44

@林晓鹏 电脑里的另一个程序将 80 端口占用了而已,例如 QQ 音乐默认就占用这个端口,找到占用 80 端口的程序关闭之,具体怎么找 google 一下

2017-07-01 10:24

@pfjia 继承一下InterceptorStack 即可实现

2017-06-30 21:58

不能比这更简单了,页面一个 img 标记,后台一行 renderQrCode(...),打完收工

2017-06-30 21:58

你看一下加入俱乐部页面的二维码 img 标记的 src 属性值就全明白了,打开这个链接: http://www.jfinal.com/club/join

注意点击鼠标右键看 img 的 src 属性,指向的是 action,而这个 action 之中用了一句: renderQrCode(...)

2017-06-30 17:29

@要输就输给追求 严谨的做法是返回 404错误