Salesforce中Html的转义,InputField和RemoteAction

在Salesforce的开发中,有时候须要在对象中插入记录,其中有的字段须要插入Html,可是对于输入Html的域,大多数框架和网站都须要作Html的转义处理,防止XSS或者SQL注入攻击。有时候咱们却须要取消这个Html转义的保护机制,考虑到有些需求,好比:博客网站,一些须要发表文章的网站,通常会给用户提供一个Html编辑器进行文章的编辑,最后存入数据库,而用户玩玩须要对文章的字体大小颜色等等进行订制,因而Html编辑器返回的文章即是一大串带Html代码的字符,存入数据库后,咱们又须要读取出来,此时也不须要Html的保护,那么在Salesforce中咱们能够如何作到这点。javascript

1。   首先是InputField输入的验证,对于这种输入框,若是咱们不须要转义,能够经过’html-’前缀来取消。html

在Apex的文档中咱们能够找到这么一段对于InputField的解释 This component supports HTML pass-through attributes using the "html-" prefix. Pass-through attributes are attached to the generated<input>tag. 可是文档中却找不到这样的一个例子,不过咱们仍是能够知道要表达的意思:java

<apex:inputfield value="{!c.FirstName}" html-data-val="true"/>

对于上面的一段代码,若是不使用html-data-val=”true”,则即是默认的对输入框的值进行转义(若是里面有包含Html代码的话)。经过这个html-前缀,便关闭了这个输入框的转义机制。数据库

 

2 。  在@RemoteAction标签的函数里面,有时候须要经过js请求控制器的函数,而后获取包含Html代码的字符串,可是这个也会被转义。app

@RemoteAction
    public static String RsMsg(String arg)
    {
        return '<p>Test</p>';//model.Remark__c;
    }

js函数回调alert的结果以下:框架

image

被转义了,这个显然不是咱们想要的结果,想要搞定这个问题,以下:咱们须要在调用该RemoteAction函数带上{escape: false}这个参数编辑器

<script type="text/javascript">
        function GetMsg()
        {
            CreateOrEditTestController.RsMsg(
                "我是参数",
                function(result,event)
                {
                    if(event.status)
                    {
                    debugger;
                    alert(result);
                       $("#ShowMsg").append(result);
                    }
                }
                ,
                {escape: false}
                );
        }
    </script>

默认的escape都是true,把这个参数赋个false,即可以:函数

image

相关文章
相关标签/搜索