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

2017-05-25 14:21

@要输就输给追求 新版本的 cos 不仅可以支持 input 的 name 重复,而且支持上传的文件是有序的,而且在上传文件长度超过范围时抛出 ExceededSizeException,便于应用程序中捕获处理

2017-05-25 14:19

@要输就输给追求 这个不需要在 jfinal 3.1 中解决,而是要在 cos 这个第三方中解决,刚刚已经更新了这个 cos 第三方,并上传到了 maven 中心库,maven 升级方式:
groupId:com.jfinal
artifactId:cos
version:2017.5

2017-05-24 22:39

jfinal 仅仅只是将 sql 与其参数扔给 JDBC,理论上来说只要 JDBC 很快,那么查询一定很快

2017-05-24 22:39

单步调试进入 paginate 方法,看哪一行代码明显慢了,即可立即找到原因

据推测是 sql 本来就慢了,你在控制台执行的 sql 很可能与 java 代码中的 sql 有很微妙的差别,例如:where 中使用的条件次序不同,造成没有用上索引

2017-05-24 22:35

生产环境 nginx 已然是标配,在 nginx 的配置文件中直接屏蔽对模板目录的访问即可

如果一定要自行屏蔽,可以使用 jfinal 的 Handler,代码大致如下:
public void handle(target , req, resp, isHandled) {
if (target.endsWith(".html")) {
HandlerKit.renderError404(req, resp, isHandled);
return;
}
next.handle(target, req, resp, isHandled);
}

2017-05-24 22:30

浏览器地址栏里直接请求的 "login.jsp" 文件,那么要确保 jetty 添加了对 jsp 支持的 jar 包,因为 jetty 是模块化的,不一定对 jsp 有支持

直接对 jsp 请求,已然绕开了 jfinal,所以这个问题本质上是与 jfinal 无关的

2017-05-24 22:28

上传文件的 File 对象,可以通过 UploadFile.getFile() 直接获取到,不需要再 new 一次 File

感谢分享

2017-05-24 22:26

weblogic 下使用 jfinal + velocity 的情况不多见,能否在搞定以后,分享一下这个问题的解决方案,我本地没有 weblogic 环境

2017-05-24 22:23

用一下 HttpKit.get(...) 与 HttpKit.post(...),如果你说的远程调用是 RPC,那么 jfinal 未提供这种支持,用一下第三方就好

2017-05-24 15:18

在首页可以下载 jfinal 3.1 all 这个 zip 文件,里面对所有包的使用都有说明

连接池可以换,而且可以直接传入 DataSource 给 ActiveRecordPlugin