2017-07-28 15:53
@Willson_L 不是 bug,设置一下: ModelRecordElResolver.setResolveBeanAsModel(true) 即可
2017-07-28 15:50
@JFinal007 Content-disposition 这个 header 当然是加过了的,所以我才可以说与 jfinal 无关嘛
看一下jfinal 原码:com.jfinal.render.FileRender.java 第 104 行
2017-07-28 15:45
@tuzqone 3.1 版本的 #include 指令仅仅是添加新的特特,原先只支持一个参数,3.1 支持多个参数,所以升级完全不影响
#if 指令没有变过,如果之前用 1.9,改动也很小,主要就是一个 me.setBaseViewPath(...) 从 configConstant 中挪到了 configRoute 中去了,详细的升级文档见 jfinal 手册第一章
2017-07-28 14:43
#()、#if、#define 这些都是 jfinal template engine 的指令,那么只有在针对某个模板文件使用 render(...) 的时候,才能去解析这些指令
因此,scr="top.html" 这类方式指向的 html 是根本没有通过 template engine 解析过的,所以里面的指令不会得到处理
解决办法是让 src 指向一个 action,然后这个 action 中进行 render("top.html"),或者通过 #include("top.html") 与 #render("top.html") 进行渲染
使用 jfinal template engine 可以完全代替 JSP,并且学习成本十分之低,使用十分之方便
2017-07-27 21:33
@tuzqone 使用 jfinal 3.1 去支持中文文件名,前提是你的中文文件名在 linux 系统下本身不是乱码,如果本身就是乱码的,那在程序中也会是乱的
2017-07-27 20:56
@linuxea 每个 ActiveRecordPlugin 对象都拥有独立的 Cache 依赖配置,所以,如果你的需求是每个数据源拥有独立的 cache,这个天然就实现了。
如果你是希望每个数据源拥有多个不同的 cache,这个需要你自己写代码去控制
2017-07-27 20:48
你给出的结构图其实并不贴切,jfinal club 用于实现 layout 功能的方法,在本质上就是简单的函数调用:
1:#define layout() 定义 layout() 函数
2:layout() 函数中分别调用了 main() js() css() 这三个函数
3:定义 layout() 函数的模板文件通过 addSharedFunction(...) 将其置为共享函数,你可以认为是在最终的页面用 #include("__layout.html") 包含进来了而已
4:最终页面先是调用了 layout() 函数,然后 layout() 会调用 main()、js()、css(),而这三个函数在最终页面通过 #define 定义出来即可
简单来说:
1:最终页面,例如 index.html 是程序入口
2:在程序入口调用了 layout()
3:layout() 调用了定义在本页面定义的 main() js() css()
由于函数/方法几乎是所有程序语言中都有的现成的概念,所以理解起来非常符合直觉