码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2016-05-18 17:30:17      阅读:815      评论:0      收藏:0      [点我收藏+]

标签:

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 被编码 的问题解决

标签:

原文地址:http://www.cnblogs.com/teeup/p/5505630.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!