一、前提介绍
1.框架中使用了Filter过滤器,其中包含了HtmlFilter
HtmlFilter:HTML标签过滤器,过滤所有以“<”开头、以“>”结尾的标签
2.方法接收的参数为富文本编辑器中的内容
富文本示例:
<p>
<img src="/ke4/attached/W020091124524510014093.jpg" alt="" /><br />
天气晴朗
</p>
<p>
<br />
</p>
3.当通过了HtmlFilter过滤后,方法内接收到的数据就会变成:
天气晴朗
这是不符合我们的需求的。我们需要保存富文本编辑器中包括标签在内的所有内容,在需要展示的时候,必须将其一字不差的返给前端。
二、解决方法
1.前端在传参时,需要将富文本编辑器内的文本进行HTMLencode转码。(< 转为 <、>转为>、“转为")
html转码后富文本示例
<p>
<img src="/ke4/attached/W020091124524510014093.jpg" alt="" /><br />
天气晴朗
</p>
<p>
<br />
</p>
2.后端接收到参数后,进行解码获得富文本编辑器的实际内容,并保存。
三、实用方法
1.Html解码方法:
import org.apache.commons.lang3.StringEscapeUtils;
StringEscapeUtils.unescapeHtml4(text)
2.去除标签<>的正则表达式
String contentFull = StringEscapeUtils.unescapeHtml4(text);
contentFull = contentFull.replaceAll("\\&[a-zA-Z]{1,10};", "")
.replaceAll("<[^>]*>", "").replaceAll("[(/>)<]", "");