2018-08-06 11:57

小括号中的就是表达式,是参数,与外面的是不同的:
#@paginate(files.pageNumber, files.totalPage, "/MyFileSys/files/getMyFiles/groupId-" + user.id + "-memuId-");

2018-08-03 15:05

得到 SqlPara 对象以后, 这样用:
Db.delete(sqlPara.getSql(), sqlPara.getPara());

在文档中有说明:所有数据库 API 在没有直接支持 SqlPara 参数时,调用其getter 方法取出 sql + para 即可使用

这样设计的原因是避免 API 数量膨涨

2018-08-01 08:37

@阳光男孩_木注意看一下 renderText 方法还有个带 ContentType的重载方法用这个带 XML 的即可

2018-07-31 17:46

这个是空指针异常,根据异常提示,调试一下是哪个对象为 null 引起的

2018-07-31 17:43

直接使用 renderXml("file.xml"), file.xml 文件中可以直接使用 jfinal 的模板引擎功能,输出一些动态数据,还可以使用 #for 循环输出数据,看下文档

2018-07-30 10:34

如果你在使用 enjoy 时,在控制台没有错误提示,需要下载本站首页的 jfinal demo,使用里头的 log4j.jar 以及 log4j.properties 文件

2018-07-30 10:33

freemarker 为了满足支持变量不赋值的场景,但要解决用户体验不好的问题,需要添加一个叹号来解决,例如:
#(userName ! )

而 enjoy 觉得多一个叹号比较麻烦,就没有这样设计

2018-07-30 10:31

模板有错误时,在控制台和日志中会输出很明确的提示,明确到行号、出错原因

#(userName) 错写成了 #(uName) 这种况是没有输出,你试试 #(user.nickName) 在找不到 user 时的情况就知道了

这样设计的原因是历史上 freemarker 就是采用找不到变最时输出黄色错误页面,用户体验 非常不好,因为 #(userName) 这类变量在模板中通常可以不用赋值的应用场景

2018-07-30 10:28

单步调试,看是哪一步慢了, 200 条数据 19 秒这个在正常情况下是不可能的,除非是有死锁或者是每条数据的数据量巨大

很可能是网络原因或者是数据库本身就慢

2018-07-28 21:35

用一个全局拦截器,大致代码如下:
try {
inv.invoke();
}
catch (Exception e) {
Throwable t = e.getTargetException();
if (t instanceof 你的业务异常类理) {
// 处理业务异常:
// 例如: inv.getController().renderJson(...);
}
else if (t instanceof 其它异常类型) {
....
}

2018-07-25 20:35

跨域有很多办法,参考一下这个:
http://www.jfinal.com/share/260

2018-07-25 20:31

这个从来没碰到过,可能是 sql 有错误

2018-07-25 20:30

加个全局拦截器就可以了:
me.add(new SessionInViewInterceptor());

2018-07-25 11:25

@miracle佐 @土龙 又来两个踩坑的,oracle 作为这么成熟的商业公司出现这种 bug 实属不应该

2018-07-25 11:24

将 servlet api 这个依赖彻底去掉,参考首页下载的 jfinal_demo_for_maven 项目中的 pom.xml