Экранирование специального символа HTML с помощью JSP или JQuery

Мой файл JSP содержит таблицу со следующей строкой:

<td class = "description" id = "${doc.id}"></td>

Я хочу, чтобы сначала он был пустым, как указано выше. Позже, после загрузки страницы и обработки некоторой логики, я хочу асинхронно заполнить ее контентом с помощью метода JQuery .html:

$("#${doc.id}").html("${doc.description}");

Для обычного пользовательского ввода все работает нормально, но возникает ошибка, когда пользователь вводит специальный символ: "

Как я могу запретить приложению считывать этот символ как специальный, и чтобы приложение работало правильно?

Я пробовал использовать такие escape-функции JSP:

$("#${doc.id}").html("${fn:escapeXml(doc.description)}");

И это:

$("#${doc.id}").html("<c:out value = "${doc.description}"/>");

И ни первое, ни второе не сработали. Почему?

Вы можете JSON закодировать его на сервере

mplungjan 05.10.2018 16:09
$("#${doc.id}").html("<c:out value = "${doc.description}"/>"); не имеет никакого смысла. Если вы уже знаете данные, поместите их в скрытый div и покажите / скройте / скопируйте div
mplungjan 05.10.2018 16:13
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
103
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вот один способ - увидеть, что у вас уже есть данные на странице

<td class = "description hide" id = "${doc.id}"><c:out value = "${doc.description}"/></td>

куда

.hide - это {display: none}

а потом

$("#${doc.id}").show();

Похоже, это то, что мне нужно. Спасибо!

Rolf 05.10.2018 20:08

Поразмыслив, я понял, что это не то, что я искал. Причина в безопасности - если метод скрытия находится на стороне клиента, каждый может перейти к инспектору в браузере и удалить этот атрибут {display: none}.

Rolf 08.10.2018 15:14

И почему это может внезапно стать проблемой - вы в конечном итоге показываете данные на странице? Если вы успешно добавите его в переменную JS, они смогут просто просмотреть исходный код и прочитать описание в JavaScript, а не на странице.

mplungjan 08.10.2018 15:16

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

Rolf 08.10.2018 15:43

Если он не отправлен клиенту, он не отображается на клиенте. Это правильно

mplungjan 08.10.2018 16:28

Другие вопросы по теме