IE Edge Browser преобразует параметр URL из & в & - PullRequest
0 голосов
/ 23 апреля 2020

В моем приложении, которое использует библиотеку тегов JSTL версии 1.1 при использовании тега url в JSP, как показано ниже.

<c:url var="Url" value="/testUrl">
  <c:param name="action" value="login"/>
  <c:param name="name" value="test"/>
</c:url>

В старой версии Inte rnet Explorer это преобразуется в: http://applicationurl.com/testUrl?action=login&name=test

В браузере Edge это преобразуется в:

http://applicationurl.com/testUrl?action=login&amp;name=test

Так что & преобразуется в "&amp;". Теперь для контроллера, когда он пытается получить имя параметра, используя приведенный ниже код.

private void outputRequestParams(HttpServletRequest request) {
    Enumeration requestParameter = request.getParameterNames();
    while (requestParamNames.hasMoreElements()) {
        String  paramName  = (String)requestParameter.nextElement();
        System.out.println("Parameter Name: " + paramName);
}

Приведенный выше код возвращается ниже в качестве имени параметра.

При использовании старого Inte rnet Explorer: Имя параметра : имя

При использовании Edge Browser: Имя параметра : имя усилителя

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

Мы используем сервлет api 5.5.23 jar.

Вопрос:

  1. Почему символ & добавляется только тогда, когда мы формируем URL, используя c: URL-тег? Хотя, когда мы формируем URL-адрес напрямую, используя строку, он работает нормально.
  2. Это происходит из-за любого несоответствия версий jar.
  3. Какое общее исправление мы можем применить к вышеуказанной проблеме в нашем приложении, чтобы он начинает работать в браузере Edge, и мы можем избежать внесения изменений в нескольких местах.

Пожалуйста, дайте мне знать, если требуется дополнительная информация. Заранее спасибо.

1 Ответ

0 голосов
/ 26 апреля 2020

Похоже, что единственное решение на данный момент - заменить & на & опубликовать созданный URL. Это изменение работает для меня, так как я сделал это в общем методе, который вызывается из любого места. Если у кого-то есть лучшее решение, пожалуйста, предложите.

...