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



  • 相关阅读:
    ASP.NET服务器控件开发(4)复合控件
    C#特性对象集合初始化器
    C#特性匿名类型与隐式类型局部变量
    在Handler中使用Session
    使用 UDPClient 生成聊天客户端
    当下10大最热门的网站开发技术
    C#特性扩展方法
    50个非常有用的PHP工具
    c# 调用.bat文件
    c# 特性/属性(Attribute) 以及使用反射查看自定义特性
  • 原文地址:https://www.cnblogs.com/teeup/p/5505630.html
Copyright © 2020-2023  润新知