HTML 从数据库中检索出的内容不正确
HTML retrieved from database does not appear correct
我正在使用 Spring4/JPA/JSoup/Ckeditor 创建一个应用程序。
用户登录->打开页面->使用 ckeditor 输入文本->发布它(一种小型博客)。
数据已成功保存在mysql数据库中,例如:
- 用户在 ckeditor 中输入了一个粗体文本,它被保存为
<p><strong>Bold</p></strong>
- 但是当我启动视图页面时 (jsp),此数据与来自数据库的 html 标签一起出现,如下所示:-
<p><strong>Bold</p></strong>
为了正确的行为,它应该显示为 - Bold
当我查看 jsp 页面的源代码时,保存在数据库中的 html 如下所示
输出自
<p><strong>Bold</strong></p>
你能帮我解决这个问题吗,我找不到将 <> 转换为
的位置
< >
正在举行?
谢谢
你的问题是这些数据被转义了HTML。最常见的解决方案是使用 apache-common-lang 库。然后你只能通过这个取消转义 HTML:
StringEscapeUtils.unescapeHtml(retrivedDataFromDatabase)
为此,您必须导入 Apache Common:
import org.apache.commons.lang.StringEscapeUtils;
您可以从 this link 下载它并将其添加到您的库中。
Here 是 StringEscpaeUtils 的 JavaDoc。
编辑:
并检查您是否在 web.xml:
中注册了 encodingFilter
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
另一种解决方案:(@user3367569 - 问题所有者的最终解决方案)
插入JSP:
<c:out escapeXml="false" value="${ticket.body}" />
在 jsp 中添加以下代码有效
<c:out escapeXml="false" value="${ticket.body}" />
我正在使用 Spring4/JPA/JSoup/Ckeditor 创建一个应用程序。
用户登录->打开页面->使用 ckeditor 输入文本->发布它(一种小型博客)。
数据已成功保存在mysql数据库中,例如:
- 用户在 ckeditor 中输入了一个粗体文本,它被保存为
<p><strong>Bold</p></strong>
- 但是当我启动视图页面时 (jsp),此数据与来自数据库的 html 标签一起出现,如下所示:-
<p><strong>Bold</p></strong>
为了正确的行为,它应该显示为 - Bold
当我查看 jsp 页面的源代码时,保存在数据库中的 html 如下所示 输出自
<p><strong>Bold</strong></p>
你能帮我解决这个问题吗,我找不到将 <> 转换为
的位置< >
正在举行?
谢谢
你的问题是这些数据被转义了HTML。最常见的解决方案是使用 apache-common-lang 库。然后你只能通过这个取消转义 HTML:
StringEscapeUtils.unescapeHtml(retrivedDataFromDatabase)
为此,您必须导入 Apache Common:
import org.apache.commons.lang.StringEscapeUtils;
您可以从 this link 下载它并将其添加到您的库中。
Here 是 StringEscpaeUtils 的 JavaDoc。
编辑: 并检查您是否在 web.xml:
中注册了 encodingFilter<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
另一种解决方案:(@user3367569 - 问题所有者的最终解决方案)
插入JSP:
<c:out escapeXml="false" value="${ticket.body}" />
在 jsp 中添加以下代码有效
<c:out escapeXml="false" value="${ticket.body}" />