Intereting Posts
Неужели небезопасно создавать строки HTML в Javascript? Использование одинарных кавычек (экранирование) в PHP php – Как отслеживать страницы, посещаемые пользователями после выхода из моего сайта? Запись полного пути файла при его просмотре с использованием php Мягкий дефис в HTML ( vs. & shy;) Как распечатать прокручиваемое содержимое DIV Просмотр Django с возвратом json без использования шаблона Показывать нижний колонтитул, если внизу страницы или страницы закрыто. сохранить выбранное значение в форме html, после нажатия кнопки Submit Клавиши со стрелками не работают во входных и текстовых областях написать html-файл, содержащий ссылку, открывающую приложение excel в конкретном листе и строке Ссылка на страницу с определенным HTTP-методом (DELETE) Добавить class в родительский div, если есть определенный class Несколько файлов base64 в одном Переменный цвет строки таблицы с первой строкой другого цвета

Запрос параметра Losing Plus Sign

Я редактирую форму поиска и пытаюсь защитить от специальных символов в базе данных. В форме поиска JSP выпадающий список (многоселектор) позволяет пользователям выбирать описания, которые будут использоваться в запросе (примечание: описания – список строк):

       

Когда форма отправляется, страница динамически генерирует URL-адрес, который принимает параметры запроса в URL-адресе (уродливые, я знаю, руки связаны). Вот снайпер, создающий сегмент описания.

 var descriptionSelectBox = document.getElementById("descriptionSelect"); var descriptionsUrlAddition = ""; for (var i = 0; i < descriptionSelectBox.options.length; i++) { if (descriptionSelectBox.options[i].selected) { descriptionsUrlAddition += "&descriptions=" + escape(descriptionSelectBox.options[i].value); } } 

У меня есть тестовая запись в базе данных, описание которой:

AAA `~! @ # $% ^ & * () _ + – = {} | [] \:”; ‘ ?,. / И ничего себе в этом есть много специальных символов.

С приведенным выше кодом, по какой-то причине, когда запрос попадает на controller, описание теряет знак + (он становится просто пробелом).

Кто-нибудь знает, что может произойти и как это исправить? Я не уверен, что это связано с особым использованием URL +, или что. Я мог бы отредактировать, как заполняется список описаний (возможно, избегая там). Если вы предлагаете это в качестве предложения, используйте специальный код Java (нет classов Apache escape utils и т. Д.).

Если это помогает, использование предупреждений в JavaScript указывает на то, что знак + не преобразуется перед отправкой запроса.

+ означает «пробел» в URL-адресах. Замените его %2B . Вы могли бы это сделать сразу после составления descriptionsUrlAddition .

 descriptionsUrlAddition = descriptionsUrlAddition.replace("+", "%2B"); 

Вы должны использовать в передней части функцию javascript encodeuri для кодирования ваших параметров.