首页 > 数据库技术 > 详细

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

时间:2016-05-18 17:28:19      阅读:335      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!