2018-08-17 16:36

@陈伟 使用内置的 #number 指令,具体用法见文档,其中的 format 参数搜索一下 DecimalFormat

2018-08-17 12:03

@小智zaki jfinal demo 中的生成器直接拿去用就好

2018-08-17 11:05

@小智zaki _MappingKit 这个类是要先运行生成器,然后才会自动生成的,这个类默认是不存在的

下载首页的 jfinal demo,删掉里面的 _MappingKit.java ,然后用里面有一个生成器,运行里面的 main 方法,这时就会发现生成器再次生成了 _MappingKit.java

2018-08-17 10:25

@JM-java jfinal 的 ActionHandler 里面会 catch 到所有你没有 catch 过的异常,会自动写入日志,你只需要配置好 log4j.properties 文件即可

2018-08-16 22:12

如果向数据库写日志,应该做成异步的,具体做法是所有的写日志操作都是向一个队列里面写,这样能确保当前线程立即就返回做正事

然后让另一个线程专门从队列里面取日志并写入数据库

最后,日志数据应该单独存放在一个独立的数据库里面,该数据库要与业务数据库分开,以免拖累业务数据库的性能

2018-08-16 22:07

做一个全局拦截器,然后在拦截器里头通过 inv.getActionKey() 或者 inv.getActionController() 得到一个类似包路径的字符串,再做点 if 判断就可以控制了

此外,还可以通过使用 Routes 级别的拦截器分组进行拦截:
http://www.jfinal.com/doc/4-7

2018-08-16 22:05

jfinal 自身是没做这个压缩动作的,可能是你用的 getFile() 被人改动过

2018-08-16 15:01

不能拦截 private 方法,这个是基本要求

2018-08-16 15:01

单步调试一下看程序走向,目前看着没有问题,只能单步调试找原因

2018-08-16 11:57

@亚枫 如果你没有针对 jfinal 做过多少扩展,影响很小,有人跨 9 个版本升级 jfinal 到最新版本,升起来也很方便

如果不想升级,还有一个很省事的办法,就是拿到 jfinal 3.4 的 FileRender.java ,然后在以前的 renderFile(...) 处,改成 render(new FileRender(...)); 注意这里用的是新版本的 FileRender,便于与老版本区分,建议改个名字

如果你引入了 BaseController,还可以在其中覆盖掉父类 Controller 中的 renderFile(String) 方法:
public void renderFile(String file) {
render(new FileRender(file));
}
注意上面的 FileRender 同样也要是 jfinal 3.4 中的实现类

2018-08-16 10:48

单拿出来用,还可以不依赖于 jfinal,项目在这里:
https://gitee.com/jfinal/enjoy

用法在这里:
http://www.jfinal.com/doc/6-11

2018-08-16 10:47

jfinal 的 enjoy 引擎被设计成为不依赖于任何第三方的好处是,可以单独拿出来使用,可用于非 web 项目。否则你的非web 项目也要依赖一个 HttpServletSession 的 jar 包,很是不爽

2018-08-16 10:46

jfinal 的 enjoy 引擎被设计成为不依赖于任何第三方,所以是不能依赖于 HttpServletSession 的, 进而也就不支持这种用法:
#(session.value)

而有些小伙伴希望能在模板中使用 session,那么添加该拦截器以后就可以这么用了:
#(session.value)

2018-08-16 10:36

本站的 ajax 文件上传就是用的 jquery form,可以在本站直接下载这个插件:
http://www.jfinal.com/assets/jquery_form/jquery.form.min.js

具体用法极其简单,搜索一下

2018-08-16 10:35

ajax 不支持 enctype=multipart/form-data,用一下 jquery form 这个每三方插件解决