В моем приложении, которое использует библиотеку тегов 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&name=test
Так что & преобразуется в "&
". Теперь для контроллера, когда он пытается получить имя параметра, используя приведенный ниже код.
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.
Вопрос:
- Почему символ & добавляется только тогда, когда мы формируем URL, используя c: URL-тег? Хотя, когда мы формируем URL-адрес напрямую, используя строку, он работает нормально.
- Это происходит из-за любого несоответствия версий jar.
- Какое общее исправление мы можем применить к вышеуказанной проблеме в нашем приложении, чтобы он начинает работать в браузере Edge, и мы можем избежать внесения изменений в нескольких местах.
Пожалуйста, дайте мне знать, если требуется дополнительная информация. Заранее спасибо.