2016-10-12 11:24

在手机端查看一下收到的是什么数据,输出在控制台一下,这种情况应该是手机端的问题

2016-10-12 11:23

@kojz redis 的多个实例是指,你有多台服务器,每台服务器上安装一个 redis 服务,或者一台服务器上跑多个 reids 进程。前者是通过调整连接的 host 地址来连接多实例,后者则是通过不同的 port 连接,使用的时候,相当于 new RedisPlugin(...) 传入不同的 host 或不同的 port

另外一种在同一个 reids 实例中使用多个 RedisPlugin 的方式是,在创建 RedisPlugin 时, host 与 port 相同,但 int database 不同,就相当于使用同一个 redis 服务的不同 database

最后记住最重要一点,无论你使用上述哪种方式,多个 new RedisPlugin(...) 出来的对象对应着多个 cacheName,在使用的时候通过 Redis.use(cacheName) 进行指定

2016-10-12 10:32

@xRhbN jfinal 社区还没正式公布与推广,就连 jfinal 上万人的十来个 QQ 群都未提起过社区这回事,为的就是观测自发流量增长,如果自发流量都在增长,那就可以正式起飞了

2016-10-12 10:30

大规模系统会使用多个 redis 实例或同一个 redis 中的不同 db 来做不同模块的缓存,例如用户登录模块使用一个 redis 库,文章模块一个库

那么使用不同的 cacheName 就可以对应到不同的 redis 库,或者不同的 redis 实例,在使用的时候通过 Redis.use(cacheName) 就可以指定用的是哪个库

至于你说的用户的 key 与菜单 key 会重复的问题,显示需要让 key 不重复,或者 key 可以重复但存放的一级 key 不相同,redis 支持丰富的类型,你可以让用户与菜单分别放在两个不同的 map 中,在这两上 map 中使用相同的 key 就不会有问题

粗暴点的办法是将用户与菜单的 key 前面添加一个前缀,如: user_123, menu_123

当然,既然使用了 redis,一般都会将不同类型的数据放在不同的 map 中,建议学习一下 redis 的具体用法

2016-10-11 21:34

@nbjgl 前面只是公布了一点点社区源代码,逐步会有更有价值的代码分享出来

2016-10-11 21:33

@nbjgl jfinal 新社区不是闹着玩的,必将打造成极其专注的极速开发社区,提升开发效率、降低开发成本、提升开发体验

2016-10-11 21:25

@cnzzr 可以将这部分代码追加到贴子中,追加部分的前面说明一下是解决后的追加代码,因为回复功能不支持语法高亮显示,追加完后,可以再评论 @ 一下有需要的人就可以了,感谢支持

2016-10-11 21:21

我用的 jsoup 1.9.2,注意下版本

2016-10-11 21:13

自定义一个满足自己要求的白名单即可,以下是 jfinal 社区的代码,在 Jsoup 原有的 Whitelist.relaxed() 白名单基础上添加了一些额外的白名单,注意对于 a 的 href 很有用,否则会过滤掉 a 标签的 target属性:
static final Whitelist myWhiteList = createContentWhitelist();
Whitelist createContentWhitelist() {
return Whitelist.relaxed()
.removeProtocols("a", "href", "ftp", "http", "https", "mailto")
.removeProtocols("img", "src", "http", "https")
// 官方默认会将 target 给过滤掉
.addAttributes("a", "href", "title", "target")
// 在 Whitelist.relaxed() 之外添加额外的白名单规则
.addTags("div", "span", "embed", "object", "param")
.addAttributes(":all", "style", "class", "id", "name")
.addAttributes("object", "width", "height", "classid", "codebase")
.addAttributes("param", "name", "value")
.addAttributes("embed", "src", "quality", "width", "height", "allowFullScreen", "allowScriptAccess", "flashvars", "name", "type", "pluginspage");
}

然后用的时候这样:Jsoup.clean(content, myWhiteList );

2016-10-11 21:01

Jsoup 采用白名单的方式过滤,只有在白名单之内指定过的标记才会被保留,其它会全部被过滤掉

2016-10-11 20:58

在保存之前,用 Jsoup 这个工具,过滤掉一些不需要的内容,非常容易,一行代码的事,大致如下:
1:Jsoup.clean(content, Whitelist.relaxed()),过滤得比较 relaxed 宽松,li、h1、p、img 等等会被保留
2:Jsoup.clean(content, Whitelist.basicWithImages()),只保留基本的标记与图片标记
其它方法自己摸索一下,写个工具类,创建几个固定的过滤方法,例如 JsoupKit.filterContent(...)、JsoupKit.filterTitle(...) 基本就可以了

2016-10-11 18:14

jfinal 社区里面通用的功能会开源出来,多多关注社区动态

2016-10-11 18:03

此外 MyController 要注册路由,通过 me.add("/", MyController.class),MyHandler 也要注册一下 me.add(new MyHandler()),具体方法可以参考 jfinal 手册

通过以上方法进行的转发,可以在 MyController 中很方便的调用各种方法,例如 render(...)、renderJson()、getAttr("target")、getPara(...) 等等

2016-10-11 18:00

web.xml 中还是正常按 jfinal 的配置,配置上 JFinalFilter,然后再创建一个可访问到的 Controller,假定访问到这个 Controller.index() 方法的路由是 "/"

接下来做一个 MyHandler,将所有请求转发给前面的 Controller.index();
class MyHandler extends Handler {
public void handle(target, req, res, isHandled) {
// 先将 target 存起来,可在 controller 中通过getAttr("target")得到
req.setAttribute("target", target);
// 直接转发到 Controller.index();
next.handle("/", req, res, isHandled);
}
}

2016-10-11 16:35

@innerac 社区会逐步提供更多有价值的资源,多多关注社区动态