2017-05-27 11:42

又有新作出来了,感谢 @小木学堂 的分享

2017-05-27 11:41

白天上班,晚上做开源项目,还要回复官方社区问题,以及 gitosc、github、oschina 上的问题处理,再加上我也是个懒人,就没顾上了

2017-05-27 11:40

在后端,单步调试,看没有有一直被卡住很慢的代码

在前端,按一下 F12,观测一下是不是有请求一直在等待

2017-05-26 22:31

先设置 view type 为 jsp:
me.setViewType(ViewType.JSP);

不要使用 redirect,改成 render:
render("list.js");

redirect 是重定向,是告诉浏览器再次重新发起一个请求,新的请求必然会丢失掉你 setAttr(...) 传递的任何东西

2017-05-26 22:29

有小伙伴正开发相关插件,再等等

2017-05-26 18:00

jfinal 手册上有用法描述,还有实际的例子代码

2017-05-26 11:01

getModel、getBean 能正常工作的前提是你在页面中的 name=xxx 的值与 model 中的字段对应上,或者与 bean 中的 setter 方法对得上

这个问题与你是否有 private Integer roldIe 完全无关,这个属性定义是完全不需要的,如果是 getBean 的话,只与你的 setter 方法有关

模板中的使用有误,应该是: #(x.sex == 1 ? "checked" : ""),用个三元表达式即可,建议多看看 jfinal 手册,都是些基本的用法

2017-05-25 18:43

2017-05-25 18:29

想起来一点点,再补充一下:以前 3.0 版本的用法,getSql(...) 可传入 Map、Model 参数,例如:
String sql = Db.getSql(key, map);
Db.find(sql, p1, p2, ..., pn)
也就是说,老用法通常要传两次参数,一次用于生成 sql,一次用于查询,在查询时用纯 sql 的情况非常少,通常是需要 Object... paras 参数的

而 3.1 之所以会去掉 getSql(...) 对于 Map、Model 的参数支持,是因为使用 getSqlPara(...) 只需要传一次参数,即可完成生成 sql,以及 para 的构建,例如:
SqlPara sp = Db.getSqlPara(key, map);
Db.find(sp);
以上用法,只需要传入一个 map 就可以构建 sql 与其 Object... paras,所以是 3.1 鼓励的用法

通过对比, 3.1 的用法明显比 3.0 的用法简单快捷,而且 3.1 的用法可完全覆盖掉 3.0 的功能,升级起来也很容易

此外,3.1 的用法还能避免掉 3.0 的线程安全问题,一举多得。在这个问题的设计上是经过极为深入的考虑与实践的。建议你在升级到 3.1 的时候,再多走那么一小步,会发现新用法非常好用

2017-05-25 18:16

强烈建议升到 jfinal 3.1,用我上面介绍的办法升级是分分钟的事情,搞定后别忘了回来分享一下

总结起来就一句:用 getSqlPara(..) 代替你原来需要传参的 getSql(...),得到 SqlPara 参数以后,直接扔给 find(...) paginate(...) 系列的方法,对于 update 方法,可以这样:Db.update(sqlPara.getSql(), sqlPara.getPara())

2017-05-25 18:14

Db.update 是忘了添加 Db.update(SqlPara) 了,但你仍然可以传入 Map 的方式去使用,不一定要传入数组参数,用法如下:
SqlPara sp = Db.getSqlPara(key, map参在这里);
Db.update(sp.getSql(), sp.getParas());

新版本的 jfinal 3.2 已添加了 Db.update(sqlPara)

2017-05-25 18:12

3.0 版本中的 Model.getSql(key) 方法内部传入 this.attrs 的用法,完全可以被 3.1 版本的下面方法来代替:
SqlPara sqlPara = Model.getSqlPara(key, this);

在查询的时候这样:
model.find(sqlPara);

所以升级的改动其实很小,而且必然可以升级,就是添加一个 this 参,然后 String 接收参数改为 SqlPara 接收参数,查询时直接扔 SqlPara 对象进去

而老版本 3.0 得到的是一个 String 型的 sql,在查询的时候这样仍然要传入参数:
model.find(sql, p1, p2, ..., pn);
可见老版本的用法并不比新版本简洁,新版本的 getSqlPara 方法功能还更加灵活强大,见下面的说明

新版本的用法有如下好处:
1:避免了 find(sql, p1, p2, ..., pn) 时传参,而是直接在 getSqlPara 时传参,因为在 getSqlPara 时传参功能更加灵活与强大,例如支持 #para(int) 的用法
2:避免了 dao 对象的线程安全问题
3:避免 Model、Db 中的 getSql(...) 系列方法数量的膨胀
4:还有其它一些好处,刚刚被一些事情打断,一时忘记了

2017-05-25 17:56

@要输就输给追求 你直接升级就可以了,cos-2017.5.jar 这个版本比这 @韦甩甩 这篇分享提供的功能要更多更好,升级可适用于所有 jfinal 版本

2017-05-25 17:54

怎么弄的,把 pom.xml 贴成一个分享出来啊,前几天有不少朋友问过我怎么弄

2017-05-25 14:57

git 上很多这样的项目,这里有一个对 3.1 用得很好的项目:http://git.oschina.net/jfinal/LMS

这里有更多:http://git.oschina.net/search?search=jfinal&type=project&language=&condition=forks_count

官方广告:加入 jfinal 俱乐部可获取本站点源代码,是 jfinal 最佳实践:http://jfinal.com/club