在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的结果以下:框架
被转义了,这个显然不是咱们想要的结果,想要搞定这个问题,以下:咱们须要在调用该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,即可以:函数