2015-12-15 5 views
0

У меня есть компонент richtext, я дал вход как «foo» для компонента richtext, и он сгенерировал . Я пытаюсь передать этот сгенерированный контент из JSP в JS, используя следующий код.как передать richtext сгенерированный html-контент из jsp в файл js

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

выше линии броска «незавершенная строка» ошибка, так как переменная JS содержит

ptagstarts foo ptagends 

Я использую значение в JS, как мне нужно эту переменную в других страниц, а также. Могу ли я узнать, как удалить эту ошибку.

+0

Можете ли вы разместить там объявление * jspvariable *? –

+0

Сначала я попытался бы избежать строки. с https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringEscapeUtils.html – Thomas

+0

@Alex, это переменная String – balaji

ответ

1

От того, что вы написали, кажется, что у вас есть в вашем jspvariable строка </script>. Парсер Html рассматривает его как окончание сценария , и вы получаете недопустимый сценарий блок.

Вы можете проверить источник своей страницы, чтобы убедиться, что я прав.

Как предложил Томас, вы можете избежать вашего контента. Но пока этот контент предоставляется пользователем, я бы использовал XssApi, чтобы предотвратить атаку xss.

Так было бы что-то вроде:

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

Или:

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

В первом случае вы получите, что <script> блок из Richtext компонента в переменную JS. Он будет закодирован, и вы не получите эту ошибку, но я думаю, что вам это не нужно.

Во втором случае вы должны получать только текстовое значение от вашего компонента.

UPDATE 1

Кроме того, как я писал вам в комментариях, было бы приятно видеть, как вы извлечь содержимое из вашего Richtext компонента, потому что я думаю, что есть лучший способ сделать это, поэтому вы получите только текст без каких-либо других.

+0

Привет, Алекс, спасибо за ваш ответ. Мне нужно, чтобы html-теги были сохранены, так как мне нужно, чтобы они отображали отображаемый контент. Теперь я попробую ваше предложение по использованию xssApi и обновит вас, спасибо еще раз :) – balaji

+0

Привет, у меня есть использовал метод encodeForJSString, и это сработало, спасибо Алекс. – balaji