2017-04-06 12:13

@hanleytang postgresql 也是在 jdbc 对其支持,必然支持事务, just do it

2017-04-06 11:44

目前只能通过写个自己的工具类简单扩展一下,例如:
MyRedisKit.hsetnx(...)

在扩展方法中通过 Redis.use().getJedis() 得到 Jedis 对象以手进行扩展,注意要在 finally 块中关闭 jedis:
finally {
jedis.close();
}

2017-04-06 11:22

@小木学堂 “本身自己的需求是不是就是大多数人的需求”这个要视情况而定,例如 iPhone 手机是本身自己的需求,但手机同时也是大多数人的需求,而 iWatch 某个人自己的需求,但不是大多数人都想要的

因为每个人都是不同的,需求很可能是个性化的,如果某个产品或服务偏个性化,那么很可能就不是多数人的需求,而如果是普适性的那么产品就大卖

2017-04-06 10:38

@quiet_cai jfinal template engine 扩展起来就是这么简洁强大,指令级的扩展是 jfinal 独创的,世面上找不到第二家

2017-04-06 10:37

@zzhkiller 效率几乎一样,只不过你这种用法代码量太大了,你可以通过:
engine.addSharedMethod(new com.hikvision.utils.common.CommonKit())
将这个工具类中的方法添加这模板共享方法,然后这样用:
#(strtoTime(x.createstamp))

也可以通过 engine.addSharedObject("kit", new com.hikvision.utils.common.CommonKit())
将这个工具类添加为共享对象,然后这样用:
#(kit.strtoTime(x.createstamp))

记住一件事:jfinal template engine 是可以通过多种方式直接与后端的 java 代码打通的,所以扩展性极强

2017-04-06 10:35

你的项目用的是 0/10 * * * *,那么应该是从 0 分开始,每次增加 10 分钟的时间点执行,如果不正常,改成 0/1 以及 0/2 以及 0/3 去测试一下,数字改小有利于快速看到效果

单步调试一下,你的 0/10 * * * * 这个值是不是正确传递到了 Cron4jPlugin 之中,搞定后回来分享一下

2017-04-06 10:32

cron4j 采用了与 linux cron 表达式一样的规则,只要会用这个表达式就可以了,具体的含义在手册中有详细的说明,下面是手册中的文档片段

cron 表达最多只允许五部分,每部分用空格分隔开来,这五部分从左到右依次表示分、时、天、月、周, 其具体规则如下:
1:分 :从 0 到 59
2:时 :从 0 到 23
3:天 :从 1 到 31,字母 L 可以表示月的最后一天
4:月 :从 1 到 12,可以别名: jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct","nov" and "dec"
5:周 :从 0 到 6, 0 表示周日, 6 表示周六,可以使用别名: "sun", "mon", "tue", "wed", "thu","fri" and "sat"

如上五部分的分、时、天、月、周又分别支持如下字符,其用法如下:
1:数字 n:表示一个具体的时间点,例如 5 * * * * 表示 5 分这个时间点时执行
2:逗号 , :表示指定多个数值,例如 3,5 * * * * 表示 3 和 5 分这两个时间点执行 http://www.jfinal.com
3:减号 -:表示范围,例如 1-3 * * * * 表示 1 分、 2 分再到 3 分这三个时间点执行
4: 星号 *:表示每一个时间点,例如 * * * * * 表示每分钟执行
5: 除号 /:表示指定一个值的增加幅度。例如 n/m 表示从 n 开始,每次增加 m 的时间点执行

2017-04-06 10:28

@hanleytang 扩展一下 LogFactory,然后通过 me.setLogFactory(...) 切换成你自己喜欢的日志框架,包括 logback

2017-04-06 10:27

@airfish 那有可能是这个问题了:http://www.oschina.net/question/941098_93842

记得搞定后回复一下

2017-04-06 10:21

jfinal ide 现在有大量的用户在使用,经过时间与实践的检验,越来越成熟好用,赞一个

2017-04-05 20:18

jfinal 2.3 官方并不支持该功能,升级到 jfinal 3.0 才支持,具体的用法在最新版本的 jfinal 手册中有示例,在首页下载 jfinal 手册即可

做个小广告:加入俱乐部,专享项目中有实战用法

2017-04-05 20:16

@goodjfinalx @quiet_cai 解决办法极其简单,扩展出一个 Eval 指令出来,大致这样:
public class Eval extends Directive {
public void exec(Env env, Scope scope, Writer) {
String content = exrpList.eval(scope);
String result = Engine.use().getTemplateByString(content).renderToString(new HashMap());
write(wirter, result);
}
}

做好以后添加: me.addDirective("eval", new Eval());
用的时候这样:#eval(article.content)

jfinal 3.0 在发布前曾想做这样一个指令,但由于担心 eval 会被人误用带来一定的安全隐患,这个功能暂且留给开发者自己去扩展着玩

如果要做得更好,可以创建 Parser 对内容进行解析得到 ast 以后执行,连 Engine.use() 都不再需要了

2017-04-05 17:37

@airfish 还没解决? 一般来说碰到过这种问题都是一会就解决了,细心去调试一下找到调用是谁发起的就可以解决

2017-04-05 17:35

目前版本的 jfinal 3.0 只能去改源码来扩展一下,因为 addSqlTemplate 只支持 String 参数,需要再提供一个支持 IStringSource 的 addSqlTemplate 方法对外开放的 API 才能方便去扩展这个功能

这个功能后续考虑做进去,目前建议直接修改 jfinal sql 管理模块的源码,简单粗爆

2017-04-05 17:32

@quiet_cai 道理很简单,将这种用法用在 jsp、freemarker、velocity 等等任意的一款模板都是一样的结果,例如在数据库中存放一个 ${value} 数据,然后在 jsp 中使用一样会原样输出,不会被解析