2018-09-05 10:23
@ppupup 使用 enjoy 已有的模板函数就能很容易实现 MenuDirective 的功能了,直接看 enjoy 文档就可以很轻松实现
2018-09-05 10:20
@flash866 可能是 jdbcUrl 还不支持 utf8mb4 这个写法,也可能是你的 JDBC jar 包的版本太低了,毕竟 utf8mb4 是高版本的 mysql 才开始支持的
多做尝试、多调整,在 jdbcUrl 中实在不能用 utf8mb4 也是没有关系的,这个不配置默认就会按 mysql 服务端的配置走
mysql 服务端的配置文件中默认是指定了 server 端与 client 端的字符集的
2018-09-05 10:16
如果想在 spring 下面做点扩展,先绕个十万八千里,看懂它的代码再开始写代码,黄花菜都凉了
jfinal 的 enjoy 引擎中做了支持 spring 的 view 的括展,扩展它的 AbstractTemplateView,先是有七层继承关系,再来六个接口实现,光是看清它里面的各种依赖、协同关系就得费很多时间,更别说扩展了
这还不算,扩展 view 还得同时扩展 AbstractTemplateViewResolver,以来了六层继承关系和五个接口实现。这个 AbstractTemplateView、AbstractTemplateViewResolver 的设计者一定是脑子进屎了
2018-09-05 10:08
@fansunion jfinal 几乎所有功能都留了扩展的口子,而且扩展起来极其容易
扩展的方式也很多,例如你上面那个 json 扩展的需求,你还可以通过引入一个 BaseController 继承 Controller,在其中覆盖父类的 renderJson 方法,然后做个自己的 MyJsonRender,最后这样:
public void renderJson(..) {
this.render = new MyRender(...);
}
或者不引入 BaseController 也可以,像下面这么调用就好:
render(new MyJsonRender(...));
如果不想扩展的话,还可以直接使用 renderJson(String jsonString) 带 String参的这个,然后自己将 json 转完以后传进去
2018-09-04 23:29
@libofei 通过下面的代码:
String sessionId = getCookie(LoginService. sessionIdName);
然后通过 sessionId 这个值去数据库中的 session 表里面去查询就可以知道是哪个用户了
如果只是退出功能,不用查询,只需要做两步:
1:删除 session 表中相关数据:
Db.update("delete from session where id = ? ", 从cookie得到的sessionId 值)
2:删除 cookie 值:
removeCookie(LoginService. sessionIdName)
这段代码在 jfinal club 中的 LoginService 类的 logout(...) 方法中有:
public void logout(String sessionId) {
if (sessionId != null) {
CacheKit.remove(loginAccountCacheName, sessionId);
Session.dao.deleteById(sessionId);
}
}
配置合 LoginController 的 logout() 这个 action 看一下就一目了然了
2018-09-04 21:02
@錢勢惘導 异常表明你的代码是往 ehcache 中存入 DaoContainerFactory 这个对象了,而这个对象一般是在 Config 对象中,也就是说你很可能是向 ehcache 中存放 Config 对象了
至于怎么存的,很可能是间接存放,举个例了,假定你有一个类叫 Aaa,然后这个 Aaa 声明了一个属性 private Config config,这样在向 ehcache 中存放 Aaa 时就会间接存放 Confing , 从存间接存放 DaoContainerFactory
还有一个要注意的地方,看看你有没有向 session 中存放 Config 对象,由于 jfinal 支持 session 持久化到 ehcache ,所以存放在 session 中的数据也会间接被存放到 ehcache 中,当然,这种情况只是在重启的时候存取一下,不影响总体
2018-09-04 20:54
@libofei club 中没有使用 session, 是自己用数据库的 session 表代替了原本的 session 功能
这样做的好处是便于做集群,每个集群的结点共享这个数据库就很方便实现了集群
而你谈到的 session 是让每个 tomcat 去持有了 session 数据,不支持集群
2018-09-04 20:51
@zcazj cron 表达式的五部分分别为:分钟、小时、天、月、周。
在写 cron 表达式时有个技巧,就是注意一下 “每” 这个表述,当你说 “每” 的时候,就是在相应的位置上使用星号 "*"
例如,你想每天 1 点运行,那么潜台词就是:你想每周、每月、每天、一点钟、零秒运行
位置与 cron 表达式一致就是:零秒、一点钟、每天、每月、每周
继续翻译成 cront 表达式就是:0 1 * * *
碰到每就用星号,没有表述的潜台词部分也要翻译出来,如上例中的每周、每月、每天