【问题标题】:Display HTML Tags and Content in label Wicket在标签 Wicket 中显示 HTML 标签和内容
【发布时间】:2013-10-08 20:06:39
【问题描述】:

我正在使用 Apache Wicket 制作博客。对于富文本编辑器,我使用的是从 Github 获得的 stackoverflow markdown fork。它将 HTML 存储在数据库中。当我检索内容并将其显示在标签中时,我遇到了问题。

问题是用户可能同时包含内容和代码,因此在从数据库中检索内容时,我在标签上使用label.setEscapeModelStrings(false); 以保留格式。但如果帖子在pre 标签中包含 HTML,也会被解析和呈现。

我希望pre 标记中的 HTML 不能按原样呈现和显示。

只有当用户发布的内容包含一些 HTML 代码时才会出现问题。任何解决方案,服务器端还是客户端?

谢谢

更新 也许我可以用 Jsoup 解析内容并转义 pre 中的内容。 例如:-
content.replaceAll(">",">");

【问题讨论】:

  • 我认为您必须手动转义 pre 标签中的 html(即在将其发送到您的服务器之前的 javascript)...
  • @Nicktar 请查看更新后的问题,您如何看待这种方法?我对 Javascript 不是很满意
  • 修复错字后,这看起来可行,但我建议使用 Wicket 内置方法来实际转义这些部分。这样做的 Wicket 方法是 org.apache.wicket.util.string.Strings.escapeMarkup(CharSequence)。

标签: java wicket


【解决方案1】:

我部分遵循@Nicktar 的建议,即在存储到数据库之前转义字符串,
但是由于我不是很擅长@Javascript,所以我选择使用Jsoup 来解析字符串并转义pre 标签中的内容。这是代码:-

Document doc = Jsoup.parse(labelText); //labelText comes from input
    Elements titleElements = doc.getElementsByTag("pre");
    for (Element pre : titleElements) {
        String content = pre.html().replaceAll("<", "&lt;");
        String content2 = content.replaceAll(">", "&gt;");
        pre.html(content2);
    }

//Save to db..

而且它有效。

【讨论】:

    猜你喜欢
    • 2011-09-28
    • 1970-01-01
    • 1970-01-01
    • 2014-03-16
    • 1970-01-01
    • 2020-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多