unterminated string literal error in salesforce

匆匆过客 提交于 2020-01-25 02:52:08

问题


I am trying to get a value from salesforce class into a javascript variable. I am able to get the value if its a single line value, but if its multiline textarea it gives a unterminated string literal error

caseUpdate.Description = "{!ac__c.C_Info__c}";

After googling for sometime i came to know we can have a workaround for this by having a hidden field and using DOM storing it using the document.getElement.Id. But i am calling this code on a button click so i would not be able to create a input text or hidden field value. Any body who can provide an way to do it?

Thanks Prady


回答1:


It is because of line breaks. merge fields are rendered unescaped into the output stream meaning that CRLFs push into a new line and break javascript strings. Either use the div/input trick or use Apex to replace \r\n's in the field with <br/> or whatever best suits the purpose. Also keep in mind that " will also terminate your JS string.

The easiest way is to just include a function in your extension and then you can use it across board

public String FixNewLine(String s) {
    if (s != null) return s.replaceAll('\r\n', '<br/>').replaceAll('"', '\\"');
    return null;
} 



回答2:


You should just be able to use the standard Salesforce JSENCODE() function if you are using OnClick Javascript in a button. This will escape any characters for you.

See the documentation.




回答3:


I had the same issue but was able to fix it! The trick is the JSENCODE function. Its basically {!JSENCODE(Obj.Field)}"; So you are replacing your merge field with this function and nesting the merge field itself within the function. In my scenario I ended up with opptyObj.Description="{!JSENCODE(Case.Description)}"; as my total syntax. First calling upon my set object and field, and then the merge data to populate it.



来源:https://stackoverflow.com/questions/5794593/unterminated-string-literal-error-in-salesforce

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!