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

相關文章
相關標籤/搜索