2016-11-10 10:34
@杜福忠 非常感谢你对社区的支持,上个月就发现捐助人名里面你的名字非常眼熟,刚看了一下一共有 6 次捐助,如果所有 jfinal 用户都这样支持,那社区发展就会更加迅猛了
2016-11-09 10:35
@小木学堂 jfinal 社区的所有功能也是极简设计,代码量极少,但实现了类似于微博的核心功能,微博也是首页看到自己与关注好友的信息、点赞、@功能 等等
社区这一套功能,基本上就是五张主表搞定,不能比这更简洁了
2016-11-08 20:10
将两套界面分别放在不同的目录下,然后页面中的资源路径用一个主题目录变量用于所有的资源路径,最后再用一个 handler 根据 cookie 中的值,或者登录用户的配置进行切换即可,具体办法大致如下:
1:在 webapp 下分别创建 red、blue 这两个主题目录
2:将两套页面分别放在 red、blue 之下
3:两套页面所有资源用一个变量使用动态资源路径,或者使用相对于本资源的相对路径,如 <img src="${THEME}/img/abc.jpg">,如果资源方便用相对路径可以这样:<src="../img/abc.jpg" >
4:写个 ThemeHandler 动态设置变量值
if ("red".equals(getCookie("THEME")) {
// 这个 "/red" 是一个路径,会在页面被正确得到
request.setAttribute("THEME", "/red");
}
next.handle(target, request, response, isHandled);
2016-11-08 17:25
@lyh061619 那必然是程序逻辑问题,paginate 用了四年多了,不会出这类错误,多单步调试解决程序逻辑问题
2016-11-08 17:19
@lyh061619 如果sql 的最外层是 group by,需添加一个参数:
paginate(1, 10, true, "select * ", ...); 注意第三个参数为 true,是告诉分页 api,这个 sql 的最外层是 group by
注意,这里一定是最外层是 group by 才这样,如果 sql 嵌套过了,内层用的 group by 则不需要
2016-11-08 17:02
jfinal 是建议先划分模块,然后在模块内部再去分层,分层的时候并不创建子包,而是用类名去区分不同的层,以下是一个例子:
1:account模块,以下是 com.xxx.account 包下的文件
AccountController
AccoutService
AccountInterceptor
2:article 模块,以下是 com.xxx.article 包下的文件
ArticleController
ArticleService
3:所有 model 统一放在 com.xxx.common.mode 包下面
便于将来抽取成公共的 maven module 拆分成多个小型的分布式系统去重用这个模块