2016-12-13 10:44

本站页面就有一些处理 json 的 js 可以参考,看这里:http://www.jfinal.com/assets/js/jfinal-com-v1.0.js

看一下 function reply(...) 这个方法中如何处理的:success: function(ret) 这个回调方法,这个 ret 是后台返回的一个对象:renderJson("ret", Ret.ok(k1, v1).put(k2, v2);

2016-12-12 21:16

一条 sql 搞定,在记录不存在时插入,存在时执行 update,大致是:
insert into table(f1, fn) VALUES(?,?) on duplicate key update count=count+1;
然后 Db.update(sql) 打完收工

通常这类功能,会做成只去操作缓存,然后再启动一个线程定时将缓存中的数据写入数据库,同时清空缓存,这样可以避免经常性写库操作,尤其对高并发有帮助

2016-12-12 20:30

arp.setTransactionLevel(2)

2016-12-12 18:11

这个 2000 人群,还有一百多个位置: JFinal极速开发官方群 38707273

请勿使用我的头像

2016-12-12 18:10

用大括号,想有多少个都可以:
@Before({A.class, B.class, C.class})

2016-12-12 14:54

对于有些只有 view 这个属性的 render ,可以只保存 view,然后在从缓存取出来的时候恢复一下这个值即可,但对于 JsonRender 这类有多个属性的 render,就需要恢复出更多的属性值来才能重建 render 对象,所以对于框架来说,需要通过接口或抽象的方式来做成通用的

感谢分享

2016-12-12 14:35

在正常的情况下,只要你的 web 项目配置是没问题的,PathKit.getWebRootPath() 就一定可以返回正确的路径,这个方法用了快五年了,不可能有 bug

2016-12-12 14:34

@似水流言1 不使用jfinal 的集成启动方式,更加没有关系,不需要理会前面我说的参数问题,只需要让 PathKit.getWebRootPath() 这个方法返回正确的路径就好

如果确实没有办法做到,可以在 YourJFinalConfig 的 configConstant(Constants me) 中通过 PathKit.setWebRootPath(...) 手动强制指定,但是这个虽然是解决了眼前的问题,但你的整个 web 项目所依赖的路径可能还是存在别的问题

2016-12-12 14:22

@似水流言1 这个已经被无数次证实过的,另外启动的时候,如果是 maven 项目的目录结构,注意四个启动参数是:src/main/webapp 80 / 5

2016-12-12 14:15

这个与项目设置的路径有关,例如你的项目将 web root 路径设置在 abc 下面,那 PathKit.getWebRootPath() 得到的就是 abc,将项目配置好即可

2016-12-12 14:14

@IvyHelen 不需要那么麻烦,只需要 public class MyRender extends CaptchaRender 然后覆盖掉其中的相关方法,用的时候这样用:render(new MyRender()) 即可

有功能需求尽量用扩展的方式,有助于未来升级,修改源码的方式只有在没有扩展办法的时候用一用

2016-12-12 11:08

jfinal 仅仅是简单地将 sql 语句与参数直接扔给 JDBC 去执行数据库操作,所以当希望做某事的时候,把以前 JDBC 的经验拿过来把 sql 写好即可:Db.find(sql, p1, ..., pn)

2016-12-11 17:31

@奋斗-now 2.3 是即将发布的新版本,正在内测中,多多关注社区动态

2016-12-11 11:55

创建一个public class MyDialect exnteds MysqlDialect 覆盖掉其中的 replaceOrderBy 方法,在方法体中直接放一行代码 return sql ,然后通过 arp.setDialect(new MyDialect()) 使用自己扩展的方言取而代之即可

原因是分页方法会生成一个查询分页总记录的 sql,为了提升性这个 sql 会利用正则将 order by 子句去掉,因为查询总记录与 order by 子句无关,而 order by 语句可以是极其复杂的,目前的正则无法完全覆盖

jfinal 2.3 已彻底解决此问题