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

那麼當你想要在數據庫中保存HTML內容的話有兩個地方須要修改:數據庫

1.jsp: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"ide

2.controller編碼

在保存以前:進行解碼操做。spa

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

 

後記:至於爲何CMS 中文章的添加就能夠不用解碼,數據庫存放的就是 HTML格式那,我尚未搞清楚,若是你高明白了請留言告知謝謝。orm

相關文章
相關標籤/搜索