2017-03-05 01:07

@wang sharedMethod 扩展以后的用法是在表达式之中直接调用方法,例如:
#if(isBlank("abc"))...
其中的 isBlank 来自于 StringKit

除了要注意用法以后,要特别注意方法的参数个数与参数类型是否匹配,如果不匹配则会报出:Shared method not found 这个异常,这个异常确实报得不太友好,jfinal 3.1 已经改进了这里,会明确告知除了方法名可能错以外,方法的参数匹配不上也会报出来

2017-03-04 16:59

@fengting jfinal 手册第一章介绍了如何升级,其中谈到了这点,搞定了没?

2017-03-04 16:48

如果是用的 IDEA,并且是用的 jfinal 集成的 jetty 启动项目,使用如下代码:
JFinal.start("WebRoot", 80, "/");

而不要使用如下代码:
JFinal.start("WebRoot", 80, "/", 5);

也就是说,IDEA 下的启动少了最后一个 int 型参数,这是由于 IDEA 启动时无法切换成 jfinal 自定义的 classloader 引发的,下载首页的 jfinal demo,看一下 DemoConfig.main() 方法中的说明文字

记得搞定后再回复一下该贴

2017-03-04 11:43

配置一下 ActiveRecordPlugin,代码如下:
arp.setContainerFactory(new OrderedFieldContainerFactory());

2017-03-04 11:33

@坚强的地瓜 这篇贴子就是在 jfinal 3.0 还没发布时发的,所以是一定可以用的,再多试试

2017-03-03 23:21

@nelsonnick Db.paginate 其中的参数仍然是 sql,所以也可以用 template engine,但并没有提供针对性的支持,下一版本 jfinal 3.1 会提供针对性的支持

2017-03-03 20:22

@程序小小白 这种用法非常之普遍,一定是可以的,具体报什么错误要贴出来,根据异常信息去解决问题

此外,一般是将参数额外传进去:
Db.update("delete from user where power=?", power);
不要将参数拼接在 sql 字符串之中

2017-03-03 18:19

存放在 session 中的值如果希望在页面使用,添加一个全局拦截器:
me.add(new SessionInViewInterceptor())

然后就可以在页面通过 #(session.object.value) 这种形式进行访问了,建议先看一下 jfinal 手册中的基本用法

2017-03-03 16:44

这里的 me 对象是 static 的,只会被创建一次,对 me 方法的调用是线程安全的,所以是完全并行的,没有锁的存在

2017-03-03 15:44

第一个问题,就是指改成与数据库字段一样

第二个问题,仍然可以使用 getModel(Student.class, true) 来获取,只不过在最后面添加一个 true 参数

addExcludeTable 可以处理 view,你可以使用正则表达式,或者通过配置文件的方式去除掉不要的 view,你也可以直接覆盖掉 getTablesResultSet() 方法,将:
new String[]{"TABLE", "VIEW"}
改成:
new String[]{"TABLE"}

总之 Genereator 中的所有方法都是面象扩展的,希望大家能举一反三的去扩展

2017-03-03 15:40

@caoxusheng @要输就输给追求 没错,就是 Db.update(sql, .... )

2017-03-03 15:36

@flash866 肯定可以的,可能是你的参数类型或者参数个数不对

2017-03-03 15:36

先从 cookie 或者 session 中取出来,然后通过将 getModel 得到的 model 调用一下 model.setXxxx(...) 即可

2017-03-03 15:34

@sruz 看一下 json 模块的源代码,代码很少,一看就全明白了,用生成器生成然后切换到 fastjson 以后,用着很方便, jfinal 下一版本考虑让 fastjson 支持 record,fastjson 使用将更方便