2017-09-08 14:11

namespace 不能嵌套,可以使用如下 key 值的形式实现多层的效果:
#namespace("aaa.bbb.ccc")

2017-09-07 21:15

这种写法可以加序列化的属性

区别可能是 new 出来的有默认序列化机制,而你这种写法需要手动添加序列化机制

2017-09-07 16:12

arp.addMapping("user", "userid", User.class); 指定 id 为 "userid" 即可

建议用 jfinal 生成器直接生成这一切,配置文件全部自动搞定。下载首页的 jfinal demo,里面有个 _JFinalDemoGenerator 类文件,运行这个文件里面的 main 方法即可打完收工

2017-09-07 15:27

用 JFinal.start(...) 方法启动试试

2017-09-07 15:26

为啥 nickName 不使用 para 指令,而后面的 keywrod 却使用了:
#para(nickName)

2017-09-07 15:23

@doocal 这也就是我前面所说的,由于 spring 的类层次太深,可扩展方法彼此之间的关联与规则繁杂,造成了扩展困难

所以,你花了很长时间才知道是通过 loadView 来实现这个 setOrder(...) 配合所实现的混合 view 功能

这个功能会考虑做到 jfinal 3.3 之中

2017-09-07 15:20

batchSave 方法会以第一条数据为蓝本生成一个 sql , 而这个 sql 是后续所有数据都共同依赖的

我猜测是你的 List 中的第一个 record 少一个字段,而后续的 record 需要这个字段,确保一下第一个 record 对象能够做为蓝本就可以

这个是由 jdbc 的 batch 机制决定的,batch 需要共享一条 sql,然后所有数据直接 addBatch 进来,一次性提交,以此来提升效率,所以你必须保证生成的这条 sql 是正确的,即:保证 list 中第一个 record 生成的 sql 是可共享的

2017-09-07 12:13

关闭浏览器仅仅可以触发 setCookie(key, value, -1) 这样设置的 cookie,注意第三个参数是 -1 才可以

而这仅仅是在浏览器端的行为,与服务器端完全无关,服务器端本质上没有 cookie,有的只有 session 表中的数据,要触发 session 表中数据的删除,需要点退出登录按钮

如果没有点击退出按钮,那么 session 表中的数据是一直在的,但用户在浏览器中的 cookie 没有了(前提是登录时没有点选保持登录状态),所以需要重新登录(没能点选保持登录状态的前提下)

session 表中的数据是有过期时间字段的,可以利用定时器定时清掉过期的数据

2017-09-06 16:56

启动的时候,在控制台会输出当前的版本号,just do it

2017-09-06 16:54

@①① 最简单的办法是用问号挂参: /files?fileName=test.docx

还有就是可以利用一个 Handler 做个转换,具体可以参考一下 FakeStaticHandler 源码

2017-09-06 13:58

根据下面的异常:
at com.jfinal.plugin.activerecord.TableBuilder.build(TableBuilder.java:50)

找到你在用的 jfinal 版本的 TableBuilder.java 的第 50 行代码,分析哪个对象可能是 null,然后一直反推

2017-09-06 13:15

解决空指针的问题,没有什么好的办法,老老实实单步调试,找到那个值为 null 的对象,然后让它不为 null 立即就解决了

2017-09-06 13:14

将 JVM 的启动时内存参数调大点,而且保障一下存入 ehcache 的数据大小是合理的,即便 JVM 内存调得再大,如果对内容的使用不得当,迟早也要 OutOfMemeory

2017-09-06 13:13

jfinal 路由规则,自打六年前第一个版本以来,就没有变动过,一定是可以的,只要认真看一下 jfinal 手册有关路由规则的那张小表格即可

jfinal 路由规则很少,只有四种路由,看一下小表格