В моем веб-приложении я пытаюсь помешать пользователям вставлять JavaScript в параметр freeText при запуске поиска.Как заменить строку запроса в шаблоне скорости Apache?
Для этого я написал код в файле Velocity заголовка, чтобы проверить, содержит ли строка запроса параметр freeText, и если это так, используйте метод replace для замены символов в пределах значения параметра. Однако, когда вы загружаете страницу, она по-прежнему отображает исходную строку запроса - я не знаю, как заменить исходную строку запроса моей новой, которая имеет замененные символы.
Это мой код:
#set($freeTextParameter = "$request.getParameter('freeText')")
freeTextParameter: $freeTextParameter
#if($freeTextParameter)
##Do the replacement:
#set($replacedQueryString = "$freeTextParameter.replace('confirm','replaced')")
replacedQueryString after doing the replace: $replacedQueryString
The query string now: $request.getQueryString()
The freeText parameter now: $request.getParameter('freeText')
#end
В приведенном выше коде переменная replacedQueryString изменилась, как и ожидалось (т.е. замена была проведена, как и ожидалось), но $ request.getQueryString() и $ request.getParameter ('freeText') по-прежнему те же, что и раньше, как будто замена никогда не происходила.
Увидев, что существует метод request.getParameter, который отлично работает для получения параметров, я предположил, что будет метод request.setParameter, чтобы сделать то же самое в обратном порядке, но его нет.
Могу ли я спросить, что вы ожидаете от этой замены? (Конечно, кроме новой строки, в которой был старый. Какой процесс вы хотите изменить или предотвратить?) Я спрашиваю, потому что я думаю, что может быть слишком поздно делать это при рендеринге представления ** после * * запрос и ** сервер односторонний **. – MyBrainHurts