balaji
balaji

Reputation: 794

how to pass richtext generated html content from jsp to js file

I have a richtext component, I gave input as "foo" to richtext component, and it generated <p>foo</p>, I'm trying to pass this generated content from JSP to JS using the following code.

    <script>
    var jsvariable = '<%=jspvariable%>'
    </script>

the above line throws "unterminated string literal" error, as the JS variable contains

    ptagstarts foo ptagends

I'm using the value in JS as I need this variable in other pages as well. May I know how we to remove this error.

Upvotes: 0

Views: 807

Answers (1)

Oleksandr Tarasenko
Oleksandr Tarasenko

Reputation: 1454

From what you wrote, seems, that you have in your jspvariable string </script>. Html parser treats it as ending of the script block, and you getting invalid script block.

You can check source of your page to be sure, that I am right.

As Thomas suggested, you can escape your content. But as long as this content is provided by user, I would use XssApi, to prevent xss attack as well.

So it would be something like:

var jsvariable = '<%=xssApi.encodeForJSString(jspvariable)%>'

Or:

var jsvariable = '<%=xssApi.filterHTML(jspvariable)%>'

In first case you will get that <script> block from richtext component into your js variable. It will be encoded, and you will not get this error, but I think you do not need it.

In second case, you, should get only text value from you component.

UPDATE 1

Also, as I wrote you in comments, It would be nice to see the way you extract content from your richtext component, because I think, there is a better way of doing this, so you will get only text without anything else.

Upvotes: 1

Related Questions