2016-12-19 10:45

@天籁 多个拦截器可以通过 InterceptorStack 组装成一个拦截器,在用的时候就相当于在用一个拦截器,可以试试

2016-12-19 10:34

@天籁 拦截器上加拦截器,相当于就是在拦截器之前加拦截器,与我介绍的方法是一样的

2016-12-19 10:32

理论上来说,你在哪调用都可以,只不过调用之前的所有代码不会被短路而已

2016-12-19 10:31

@FS心情 最好是在所有代码之前调用一次,例如你的
protected void validate(Controller c) 在第四行,那么第五行调用一次,总之,越早调用越好,因为你不是需要短路么?早调用早短路,就这么简单

2016-12-19 10:16

先调用一次 this.setShortCircuit(true) 即可极速打完收枪

2016-12-18 22:48

@xbb0220 使用 spring 也可以参考 ModelRecordElResolver 来做增强,此外 jfinal 2.3 对这个类又进行进一步增强,满足目前所有需求

2016-12-18 22:14

@lyh061619 这种功能不需要这么麻烦,直接在 Validator 中通过 controller.getMethod().equals("POST") 做判断,不处理 GET 方法,直接 return 即可

2016-12-18 20:19

没看明白这个 action 是干啥的,里面代码貌似是 validator 要干的事情, 为何不直接写在 Validator 中?

2016-12-18 20:18

补充一下,较高版本的 jfinal,对于 Model Record 的 jsp 支持已经有过增强,例如通过生成器生成 getter 方法,生成后的 Model 与传统 java bean 没有区别

2016-12-18 20:17

用一下 SessionInViewInterceptor 这个拦截器,对 session 进行了 map 化的包装。Model 与 Record 有自己的定义,她们不是 Map,所以绝对不可以继承 Map,继承的使用是需要极其小心的,尽可能不用,如果要用那么一定有充分的理由

2016-12-18 11:55

建议使用 jquery form 来实现文件上传,省很多事

2016-12-18 11:54

用多个 input type=file 表单域,并保障 name 属性值的唯一性即可,你现在的 name全是 taskImgs,那么上传的时候,后面的 file 会覆盖掉前面的 file

2016-12-17 17:29

严格来说,在totalPage 为 0 时,isLastPage 值没有意义,所以不算是 bug。即便如此 jfinal 2.3 也对此进行了改进,从用户体验上来说会好一点,感谢反馈,赞一个

2016-12-17 15:26

jfinal 提供了一个:OreillyCos.setFileRenamePolicy(...) 方法,只需要利用此方法定制一下重名时的策略即可

本站 jfinal.com 社区用的另一种方法,将文件先上传到一个 temp 文件夹,然后再利用业务层生成新的文件名,然后再将 temp 文件夹下面的文件 renameTo 一下成自己想要的文件目录以及文件名即可

对于严谨的项目来说,文件名都是有一套业务逻辑的,例如本社区,不同模块的上传文件保存在不同的子目录之下,文件名前缀使用的是用户 id 号 + 时间戳,这样重名的概率几乎为零,因为有目录 + userId + 时间戳这三个因素来保障

建议使用 jfinal 社区的方式来做

2016-12-17 11:24

@康康君 两种办法,一种是设置为开发模式: me.setDevMode(true),另一种是设置 freemarker 的缓存更新时间为 0 :me.setFreeMarkerTemplateUpdateDelay(...),这个值默认是 60 分钟