【问题标题】:Check for empty text from a rich text editor从富文本编辑器检查空文本
【发布时间】:2013-05-22 05:14:35
【问题描述】:

如何在富文本编辑器中检查空文本?

我有一个富文本,类似于我正在输入的文本。

默认情况下,该值设置为<br>,因此,在Java 中,当我检查request.getParameter("desc"); 时,我会得到<br> 的值

我想检查空字符串,包括任何 html 标签,例如 <br><hr>

这可能吗?

【问题讨论】:

  • 是的。到目前为止你尝试过什么?
  • 尝试过descStr = StringEscapeUtils.escapeHtml(descStr);,但这会转换为<br> 以获得<br>。我期待一个空的空间或行,我可以做descStr.length==0 来检查它是否为空,所以这对我不起作用。有没有简单的方法可以解决,如果没有,我将不得不更改解决方案。
  • @Andrew,您是否建议将富文本编辑器的内容存储在隐藏字段中,因为任何人都可以键入,并将其传递给后端可以解决问题。我从未尝试过,但只是想到了,或者无论如何都会一样。

标签: java html jsp jsf


【解决方案1】:

使用像 Jsoup 这样的 HTML 解析器。

String text = Jsoup.parse(html).text();

if (text.isEmpty()) {
    // No text.
}

额外的好处是它还可以帮助您使用sanitizing HTML 来避免恶意最终用户进入时的 XSS 攻击,例如<script> 在您的文本区域中。你也在检查那个,对吧?

【讨论】:

  • 感谢您的快速回复。这是一个精确的解决方案,很高兴了解该库。清理 HTML 是我遇到的另一个问题,并想在接下来发布,而你拯救了我的夜晚。再次感谢。
【解决方案2】:

也许头脑简单,但只需删除所有标签单词(包括图片和按钮)。

public static boolean isEmpty(String text) {
    return text.replaceAll("<[^>]+>", "").trim().isEmpty();
}

也许用 replaceAll 删除空格和换行符。

假设非标签 &amp;lt; 以实体 &amp;lt; 的形式给出。

【讨论】:

  • 这很有趣。我结合了 BalusC 建议的 Jsoup 来检查嵌入的 html 内容和您清理文本中标签的建议,并且成功了。谢谢你。但我认为 Jsoup 似乎已经使用 WhiteList 左右内置了这些,并且看起来有干净的方法来清理 html 标签,所以我将继续使用该解决方案。也感谢您的回复。
  • 有不跳过图片的解决方案吗?
  • @Vi_Hari 图像 &lt;img ...&gt; 的 html 标记可以在“img”上使用正则表达式负前瞻,但这不会使其成为普通图像或 RTF 图像等。再次转换为带有 "&lt;html&gt;" 前缀的 HTML 或将它们转换为 RTF(如果这是您想要的格式); stackoverflow.com/questions/1490734/…
猜你喜欢
  • 2011-06-18
  • 1970-01-01
  • 1970-01-01
  • 2015-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-09
相关资源
最近更新 更多