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-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:32
@quiet_cai 道理很简单,将这种用法用在 jsp、freemarker、velocity 等等任意的一款模板都是一样的结果,例如在数据库中存放一个 ${value} 数据,然后在 jsp 中使用一样会原样输出,不会被解析
2017-04-05 17:30
@quiet_cai 你的数据内容存放在了数据库中,而这部分内容并不是模板的一部分,只是模板中的一个变量而已,自然就不会被解析了