2017-04-10 23:48

@小徐同学 发布前会先让俱乐部小伙伴们先试用,这版非常完美

2017-04-10 23:47

@小徐同学 模板引擎的打磨刚刚全部搞定,明天打磨一下 sql 管理功能

2017-04-10 23:20

如果希望更省事,这样做也可以:
#(session.pass.charAt(4))

之所以可以这样使用,是因为 jfinal template engine 是与后端 java 直接打通的,可以直接在对象上调用它的方法

2017-04-10 23:18

@小徐同学 今天一天没顾上俱乐部专享群,专心开发 jfinal 3.1 的 template engine 功能,这个版本的模板引擎进行了非常细致化的改进,爽得不要不要的了

而且完全平滑升级,不影响原来的使用,爽啊

2017-04-10 23:16

建议通过 shared method 或者 shared object 进行扩展,假定通过第一种方式做了扩展,用的时候这样:
#(charAt(session.pass, 4))

shared method 的扩展方式详见 jfinal 手册

2017-04-10 23:14

举一反三,相当于不错哈,jfinal template engine 用着感觉如何?

2017-04-10 23:13

使用全局拦截器或者 Handler 都可以实现,通过工具类获取一下 ip 地址,只允许特定 ip 通过或者内网才能访问,随心所欲

ip 地址的获取方法详见 jfinal 俱乐部专享项目 IpKit.java

2017-04-10 23:11

注意看一下 jfinal 手册有关模板引擎这一章,如果希望模板内容不被解析,可用一下非解析块,用法如下:
#[[
这里是任意内容,内容可以是模板引擎的指令,但不会被解析
]]#

2017-04-10 15:52

这里还有一些资源:
http://blog.csdn.net/imxiangzi/article/details/47123849

2017-04-10 15:50

@北流家园网 jfinal 默认提供的指令很少,但是可以无限扩展,扩展方法极其简单

2017-04-10 15:48

redis 插件需要引入很多的 jar 包,在首页下载 jfinal 3.0 all 这个 zip 文件,里面有相关 jar 包可用

解决 class not found 异常是最最基本功,建议打好基础

2017-04-10 15:46

多数是由自己的程序中出现内存泄漏造成的,少数情况是第三方依赖有内存泄漏,在线上使用 jmap 与 jstack 这些命令去定位一下内存占用的异常情况,再修改那些内存泄漏的地方

除了内存泄漏以外,还有一种情况是内存回收的速度跟不上内存被吃掉的速度,例如:在有一定访问量的情况下,某个地方在不停的创建对象,好比 Db.find("select * from bigTable") 这种 select * 并且不带 where 条件的查询会生成很多对象

还有更专业的工具在 eclipse 中就可以查看,例如 jprofile 之类的

一般不需要复杂工具,用用 jmap 与 jstack 就好,参考这里:http://hillside.iteye.com/blog/706129

2017-04-10 15:24

HttpKit 只是为了极简去实现最常用的功能,如果将功能实现得很完善,代码量以及所花费的时间投入无法承受,因为 jfinal 定位是 mvc + orm,而 http 类型的框架要做得很完善,非一日之功

如果需要更多的 http 功能,建议用一下 http client 这样专门支持 http 功能的第三方

2017-04-10 15:20

jfinal 是后端框架,前端的效果需要使用 javascript 方面的资源去实现,例如 jquery 之类的

2017-04-10 15:19

根据异常定位到 InterceptorManager.java 文件的第 83 行代码如下:
method.getAnnotation(Before.class)

很显然这行代码是一个极其正确的代码,问题必然是出现在代码之外的地方,从下面几个方法去尝试解决:
1:确定 jdk 的版本,以及是否是 oracle 的 jdk,而非 openjdk
2:如果使用 JFinal.start(...) 启动,确定启动参数在 IDEA 开发环境之下,是否去掉了最后一个参数,也即最后一个 int 参数在 IDEA 之下一定要去掉
3:尝试将 @Before({LoginValidator.class}) 改为 @Before(LoginValidator.class)

无论如何,这个问题必然与 jfinal 无关,因为 method.getAnnotation(Before.class) 这行代码已经使用了五年以上了,从未出过问题