Search code examples
javajavascriptformsjspescaping

How to escape apostrophe or quotes on a JSP (used by JavaScript)


I have a user form. If the user types in a string with ' or " as part of it I have no problem. The form is submitted and saved correctly to the database. My problem is when I reload the page (all entries can be modified and are loaded into a list in the JSP before being displayed). On loading the page I get an error saying:

missing ) after argument list 'Caroline's message', \n

What do I need to do to escape this string for displaying it on the frontend?

Here is the code I am using on the frontend to read in the data and store it in a JavaScript object. I am not fully sure where I need to escape. The field causing the problem is c.getComName:

communications[<%=i%>][1] = new CommObject('<%=c.getComId()%>', '<%=c.getComName()%>');

UPDATED WITH HTML GENERATED:

communications[0][1] = new CommObject('101', 'Caroline's Message');

Solution

  • Use the Apache StringEscapeUtils.escapeJavaScript function.

    Escapes the characters in a String using JavaScript String rules.
    
    Escapes any values it finds into their JavaScript String form.
    Deals correctly with quotes and control-chars (tab, backslash, cr, ff, etc.)
    
    So a tab becomes the characters '\\' and 't'.