Spring security 从数据库检索的HTML看起来不正确
我正在使用Spring4/JPA/JSoup/Ckeditor创建一个应用程序 用户登录->打开页面->使用ckeditor输入文本->发布它(类似于一个小博客) 数据成功保存在mysql数据库中,例如:Spring security 从数据库检索的HTML看起来不正确,spring-security,ckeditor,jsoup,spring-4,Spring Security,Ckeditor,Jsoup,Spring 4,我正在使用Spring4/JPA/JSoup/Ckeditor创建一个应用程序 用户登录->打开页面->使用ckeditor输入文本->发布它(类似于一个小博客) 数据成功保存在mysql数据库中,例如: 用户在ckeditor中输入粗体文本,并将其另存为 粗体您的问题是这些数据都是转义HTML。最常见的解决方案是使用apache公共语言库。然后,您只能通过以下方式取消浏览HTML: StringEscapeUtils.unescapeHtml(retrivedDataFromDatabase
粗体
您的问题是这些数据都是转义HTML。最常见的解决方案是使用apache公共语言库。然后,您只能通过以下方式取消浏览HTML:
StringEscapeUtils.unescapeHtml(retrivedDataFromDatabase)
为此,您必须导入Apache Common:
import org.apache.commons.lang.StringEscapeUtils;
您可以从链接下载它并将其添加到库中
是用于StringeSPaeutils的JavaDoc
编辑: 并检查您是否在web.xml中注册了编码过滤器:
<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>
编码滤波器
org.springframework.web.filter.CharacterEncodingFilter
编码
UTF-8
强制编码
真的
编码滤波器
/*
另一个解决方案:(最终解决方案由@user3367569-问题所有者提供) 在JSP中插入:
在jsp中添加以下代码有效
<c:out escapeXml="false" value="${ticket.body}" />
我按如下方式尝试了@Lob@xmlement@JsonProperty public String getBody(){body=StringEscapeUtils.unescapethl4(body);return body;}public void setBody(String body){String cleanHTML=Jsoup.clean(body,Whitelist.basic());this.body=cleanHTML;}
仍然不工作,我是否遗漏了什么?您仍然有转义的HTML标记?是的,转义的HTML标记和输出在源代码中是相同的?我知道它仍然是转义的,但是如果没有更改,这很奇怪。或者我我丢失了一些东西…:/是的,输出与以前一样,带有<和>标记,我确认html代码是以正确的方式从控制器返回的,它在之后的某个地方发生了更改,,,不确定是与编码相关的问题还是其他问题…您能告诉我调试它的方向吗?