2018-02-01 16:30

实现一下 ISource 接口, 完成从数据库读取模板内容的功能:
public class DbSource implements ISource {
...
}

然后再实再一下 ISourceFactory,完成 DbSource 的构建:
public class DbSourceFactory implements ISourceFactory {
...
}

配置生效:
activeRecordPlugin.getEngine().setSourceFactory(new DbSourceFactory());

最后在 java 代码中就可以这样来用了:
SqlPara sp = getSqlPara(key);
Db.use(...).find(sp);

注意,以上只是示例,里头有些细节需要你自己完善,单步调试搞清楚原理

2018-02-01 16:22

where keyid=#(keyid) 这个是什么用法? 这个不是在模板中,而是在 java 源代码中

改为:where keyid=?

2018-02-01 15:38

这个问题比较奇怪,因为你的前两个参数 blogPage.pageNumber、 blogPage.totalPage 都是动态的了,为何第三个参数就不能?

2018-02-01 15:20

在浏览器中点鼠标右键,查看生成的最终 html 是不是对

2018-02-01 15:19

时间取你运行这个程序的电脑上的时间,cron 表达式看一下 jfinal 文档:
http://www.jfinal.com/doc/9-2

2018-02-01 15:16

jetty-server 这个依赖要将 provided 改为 compile,注意打包时又要再改回去,以免将 Jetty 的 jar 打进去

2018-02-01 15:15

业务通知是由你的业务触发的,时机千变万化,例如你的业务有一个独立的线程,每隔一分钟检测数据库是否有要发送的通知,有的话就查询数据库然后调用
TemplateMsgApi.send(...)

2018-02-01 15:13

@海涛大大 再多看看 jfinal 文档模板引擎的 表达式 与 指令 部分,花不了多少时间,20 分钟彻底学会这两者的用法

2018-02-01 15:11

mysql 触发器貌似不能直接调用 java 和 js,或许有某种桥接机制,例如用 socket 通信,找找相关资料

2018-02-01 00:36

做个拦截器,然后在 inv.invoke() 之后用一下 inv.getController().getRender()即可:
public void intercept(Invocation inv) {
inv.invoke();
Render render = inv.getController().getRender();

if (render intanceof XxxRender) {
...
}
}

2018-02-01 00:34

指令内部不能使用 #[[ ]]#

指令内部只能使用表达式,注意看表达式文档中所提到的各种表达式,是不可能包含 #[[ ]]# 这些东东的

所以改成:#(getImage(100,100, "{{d.image}}")) 即可

2018-01-31 18:06

可以取项目名称,但你的 html 页面中就需要将这个项目名称放在所有资源的前面,例如,图片 《img src=项目名称/img/logo.jpg 》

jfinal 建议不要使用项目名,仅仅是为了在 html 中更加方便而已, jfinal 项目是符合java web规范的普通项目,以前在 Java web 方面的积累完全有效

2018-01-31 18:03

jfinal 总体架构历经 7 年的迭代,几乎没有变过,建议直接看最新版本,一步到位