2017-02-10 2 views
2

In einer GWT Anwendung versuche ich, eine Window zu öffnen, die eine url übergibt, die Abfrageparameter enthält. Es passiert, dass ein Parameter heißt: deg_test, also ist die formatierte URL etwa wie folgt: http://localhost:8888/mymodule/search?param1=value1&param2=value2&deg_test=123.GWT Window.open in IE 11 fehlinterpretiert Abfrageparameter & deg = 123

In Chrome und Firefox das Fenster jedoch wie erwartet geöffnet wird, in IE 11 der &deg_ Teil zu ° falsch interpretiert und es wird das Gradsymbol (°) umgewandelt und bricht die URL!

Beispielcode:

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 Fenster URL: http://localhost:8888/mymodule/search?param1=value1&param2=value2°_test=123

Wenn ich die URL.encodeQueryString Methode anstelle der URL.encode beide ? und & werden verwenden codiert und Server mit 404

Antwort

2

beschweren Eigentlich ist es kein GWT-Problem, nur ein generelles Problem mit IE. Es wird alles konvertieren, wie eine Entität (ohne ; am Ende), zum Beispiel aus: jeweils &deg, &lt, &gt zu °, <, >. Siehe this question.

Als schnelle Zwischenlösung empfehle ich Ihnen, den deg_test Parameter am Anfang der Abfrage zu setzen. Auf diese Weise erhalten Sie nicht &deg Fragment sondern ?deg statt.

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

Es wird funktionieren.

+0

Danke! In der Tat wird die vorgeschlagene Problemumgehung funktionieren, die Wahrheit ist jedoch, dass in der realen Anwendung habe ich mehrere "deg _..." Parameter, die willkürlich als Abfrage-Parameter hinzugefügt werden, so dass dies schließlich mein Problem nicht löst. Ich werde Ihre Antwort auffrischen, aber ich fürchte, ich kann es nicht als Lösung akzeptieren. – pleft

+0

Eigentlich führte mich dein Link zu der anderen Frage dazu, mein Problem zu lösen. Vielen Dank, dies ist die richtige Antwort! – pleft