2017-02-10 18 views
2

В приложении GWT я пытаюсь открыть Window, передавая url, который содержит параметры запроса. Бывает, что один параметр имеет имя: deg_test, поэтому сформированный URL-адрес выглядит примерно так: http://localhost:8888/mymodule/search?param1=value1&param2=value2&deg_test=123.GWT Window.open в IE 11 неверно интерпретирует параметр запроса & deg = 123

В Chrome и Firefox окно открывается, как и ожидалось, однако в IE 11&deg_ часть неверно истолкованы в ° и преобразуется в символ степени (º) и разбивает URL!

код

Пример:

String query = "?param1=value1&param2=value2&deg_test=123"; 
com.google.gwt.user.client.Window.open("http://localhost:8888/mymodule/search" 
        + URL.encode(query), "_blank", "resizable=yes" 

IE URL окна: http://localhost:8888/mymodule/search?param1=value1&param2=value2°_test=123

Если я использую URL.encodeQueryString метод вместо URL.encode как ? и & будут закодированы и сервер будет жаловаться с 404

ответ

2

На самом деле это не проблема GWT, а общая проблема с IE. Он преобразует все, что выглядит как лицо (без ; в конце), например: &deg, &lt, &gt к °, <, > соответственно. См. this question.

В качестве быстрого обходного пути я предлагаю вам поместить параметр deg_test в начале запроса. Таким образом, вы не получите &deg фрагмент, а вместо этого ?deg.

?deg_test=123&param1=value1&param2=value2 

Будет работать.

+0

Спасибо! В самом деле, предлагаемое обходное решение будет работать, однако правда заключается в том, что в реальном приложении у меня есть несколько параметров «deg _...», которые произвольно добавляются в качестве параметров запроса, поэтому это в конечном итоге не решает мою проблему. Я отвечу на ваш ответ, но я боюсь, что не могу принять его в качестве решения. – pleft

+0

На самом деле ваша ссылка на другой вопрос заставила меня решить мою проблему. Большое спасибо, отметив это как правильный ответ! – pleft