jeesite ckeditor数据库 HTML 被编码 的问题解决

Posted 骨灰级编程高手的成长历程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jeesite ckeditor数据库 HTML 被编码 的问题解决相关的知识,希望对你有一定的参考价值。

public abstract class BaseController {
/**
* 初始化数据绑定
* 1. 将所有传递进来的String进行html编码,防止XSS攻击
* 2. 将字段中Date类型转换为String类型
*/
@InitBinder
protected void initBinder(WebDataBinder binder) {
// String类型转换,将所有传递进来的String进行HTML编码,防止XSS攻击
        
        binder.registerCustomEditor(String.class, new PropertyEditorSupport() {
            @Override
            public void setAsText(String text) {
                setValue(text == null ? null : StringEscapeUtils.escapeHtml4(text.trim()));
            }
            @Override
            public String getAsText() {
                Object value = getValue();
                return value != null ? value.toString() : "";
            }
        });
        //……
}    

我们看到关键的一句是:StringEscapeUtils.escapeHtml4(text.trim()));

那么当你想要在数据库中保存HTML内容的话有两个地方需要修改:

1.jsp:

<div class="control-group">
	<label class="control-label">商品详情:</label>
	<div class="controls">
		<form:textarea id="detail"  path="detail" htmlEscape="true" rows="4" maxlength="1024" class="input-xxlarge "/>
		<sys:ckeditor replace="detail" uploadPath="/cms/article" />
	</div>
</div>

关键一句:htmlEscape="true"

2.controller

在保存之前:进行解码操作。

ecProduct.setDetail(StringEscapeUtils.unescapeHtml4(ecProduct.getDetail().trim()));

 

后记:至于为什么CMS 中文章的添加就可以不用解码,数据库存放的就是 HTML格式那,我还没有搞清楚,如果你高明白了请留言告知谢谢。



以上是关于jeesite ckeditor数据库 HTML 被编码 的问题解决的主要内容,如果未能解决你的问题,请参考以下文章

jeesite导入导出

推荐一个java开源项目 JeeSite

jeesite使用

JeeSite如何正确连接SQL SERVER 数据库

jeesite应用实战(数据增删改查)

SpringMVC shiro 项目 jeesite框架,启动后可以访问,等待约30分钟或更久之后,第一次访问会卡住。