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 社区会逐步提供更多有价值的资源,多多关注社区动态

2016-10-11 16:01

@innerac 看具体场景,例如,你要用的这个功能本身就需要先启动一个服务,打开了监听端口之类这样才能工作,那就是要开启服务,如果只是使用 spring 的一些常规 API就不需要开服务,例如 factory.getBean(name) 这种从 spring 中获取 bean 是不需要开启服务的

2016-10-11 15:41

@innerac 理论上来说在 jfinal 中使用第三方,直接用就好,不一定要有一个集成的动作

2016-10-11 15:33

在 YourJFinalConfig 中创建一个 public void afterJFinalStart() 方法,在这里启动 Spring,然后就可以直接使用 spring 了

2016-10-11 13:04

@xRhbN 手册才 30 多页,而且大部分是代码示例,极其少量的文字,一个小时内能看完,所以一定要仔细看完,节省很多时间,很划算

Db.tx(...) 更好控制,return false 的时候可以控制回滚

2016-10-11 12:13

@xRhbN 我习惯于在业务层用 Db.tx(...) 来做事务,对动态语言熟悉的开发者会喜欢这种用法

2016-10-11 10:17

@FS心情 本来已经上了的,最近有个比较好的创新在做,根本停不下来,所以这个新开页面优先级调了一下

灵感和创新是很微妙的,稍纵即逝,所以来的时候,一定要先抓住