2016-10-24 10:59

@Noobs 这个是 jfinal 2.3 中将要推出的功能,目前建议是在 Controller 的声明入添加解,可拦截整个 controller 中所有 action

2016-10-24 10:58

要看这个 wxReq() 方法在哪里定义,如果与 test() 在同一个 controller 中,可以为 wxReq() 方法直接添加参数,再这样: wxReq(p1, p2, p3)

如果 wxReq() 本身是一个 action,不希望添加形参,可以直接使用 test() 中的参数放,如果不在同一个 controller,可以使用 forwardAction(...) 将请求转发到 wxReq()

此外,还可以使用 setAttr(key, value) 的形式传递参数

2016-10-24 10:54

随着社区的发展,jfinal 生态会越来越完善,会不断推出有价值的功能与插件,jfinal 2.3 也会在社区文档频道上线以后继续向前开发, 2.3 版将会推出非常好用的功能

祝天下开发者程序员节日快乐,愿天下开发者都使用 jfinal

2016-10-23 20:28

PropKit.use(...) 方法的核心设计目标就是为了支持多配置文件,不同的配置文件 use(...) 不同的文件名即可,如下例子将从 f1、f2 两个不同文件中获取配置:
PropKit.use(f1).get(key);
PropKit.use(f2).get(key);

2016-10-23 16:16

这个地方是帮助控制事务,以及在 showSql 设置为 true 时代理 connection 来实现 sql 语句输出的,注意如下几点:
1:在 Tx 拦截器或者 Db.tx(...) 这类开启事务的方法中,会直接从 dataSource 获取 connection 开启事务,并放入该 threadLocal

2:真正使用 connection 的地方调用该 getConnection() 方法,如果 threadlocal 中有 conn 对象,直接使用,这样拿到手的就是前面 1 中设置的 connection

3:当 threadLocal 中没有 connection 的时候,证明没有开启事务,这时再从 dataSource 中去拿 connection,拿的时候根据 showSql 值来决定是不是要生成代理

2016-10-22 21:15

@kopj 是依据 jfinal 路由规则让 url 对应到 controller 中的方法,下载 jfinal 手册了解一下

2016-10-22 20:15

大部分情况下直接 url 指向 jfinal action,少数 POST 请求为了根据业务需求使用 ajax 请求

2016-10-22 19:19

@我爱编程 多多关注社区动态,多多支持社区发展

2016-10-22 16:37

@都教授 NoClassDefFoundError 为 java 开发最常见异常,少了 druid 的 jar 包而已,如果你用的 maven 开发,添加相关 dependency 配置,否则在首页下载 jfinal all 这个 zip 文件,里面提供了所有需要的 jar 包

2016-10-22 16:26

将 index 用中扩号括起来就好: select [index] from kap_exam_type where [index] = ?

不建议字段名或表名使用保留字

2016-10-22 16:23

跨数据源事务属于分布式事务范畴,目前 jfinal 还未找到极简设计方案,所以暂不支持,目前只支持某一个数据源的回滚,Tx 拦截器默认支持主数据源事务,当需要支持其它数源事务时,Tx 需要使用 TxConfig(configName) 配合指定

搜索功能是必须要加的,只是现在还没安排出时间来,新社区刚上线不久,很多功能都在开发之中,多多关注社区动态

2016-10-22 13:21

@Aiome oschina 那个 apidoc 版本太老了,可以去 maven 中心库下载最新版本的 apidoc: http://search.maven.org/

2016-10-22 13:17

@Aiome 想了解 Handler 怎样工作,可以看一下源代码中的 com.jfinal.ext.handler 包下面的相关代码,注意几点:
1:Handler 总体是一个单链表结构,其中的 next 持有下一个 handler 对象,其中链表的最后一个元素固定为 ActionHandler 对象,这个对象专用来处理动态请求

2:在 handler 中是通过调用 next.handle(...) 方法来将请求传递给下一个 Handler的,如果不调用则不向下传递,终止单链表调用链条

3:其中的 boolean[] isHandled 这个参数,是为了告知 JFinalFilter 是否要将请求转交给 tomcat 或 jetty 这类容器继续处理,通常静态资源就需要转交,如果不需要转交,则使用 isHandled[0] = true; 即可

建议在这个单链表中设置断点调试看一下程序运行流程,可以清楚地了解细节

2016-10-22 13:12

我再补充一下 jfinal 路由设计的思脉:
1:url 本质上就是去触达后端某个 controller 中的某个 action,这个 action 就是一个 java method,所以总体上设计方向就是将 url 与 action 建立关联

2:将 url 中的最开始部分与 controller 建立关联,于是路由规则第一部分 controllerKey 对应 Controller 类

3:将 url 中的随后的一部分与 Controller 类中的 action method 建立关联,于是 url 第二部分 methodName 对应于 action 的方法

4:按照 restful 风格的核心价值,将 controllerKey 抽象成资源,将 methodName 抽象成对资源的操作,就形成了 jfinal 现在的路由风格