• 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格式那,我还没有搞清楚,如果你高明白了请留言告知谢谢。



  • 相关阅读:
    js---05 自定义属性
    js---04 属性 this
    js---03属性操作
    js02---字符串
    js01----json,数组
    android framework 02
    android framework 01
    Android Service完全解析,关于服务你所需知道的一切(下)
    Android Framework 记录之二
    Android Framework 记录之一
  • 原文地址:https://www.cnblogs.com/teeup/p/5505630.html
Copyright © 2020-2023  润新知