2017-02-10 3 views
2

GWTアプリケーションでは、Windowを開き、クエリパラメータを含むurlを渡そうとしています。 1つのパラメータの名前はdeg_testなので、形式化されたURLはhttp://localhost:8888/mymodule/search?param1=value1&param2=value2&deg_test=123のようになります。予想通りChromeIE 11のGWT Window.openがクエリパラメータを誤って解釈する&deg = 123

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.encode両方?&URL.encodeQueryString方法を使用する場合は、符号化され、サーバが404

答えて

2

と文句を言うでしょう実際にはIEの一般的な問題だけではGWTの問題ではありません。これは、例えば、(最後に;なし)エンティティのように見える何かを変換します: &deg&lt&gtそれぞれ°<>に。 this questionを参照してください。

質問の冒頭にdeg_testパラメータを配置することをお勧めします。この方法では&degフラグメントを取得するのではなく、代わりに?degを取得します。

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

でも動作します。

+0

ありがとうございます!確かに提案された回避策は動作しますが、実際のアプリケーションでは、クエリパラメータとして任意に追加される複数の "deg _..."パラメータがあり、最終的には問題を解決できません。私はあなたの答えをupvoteしますが、私は解決策としてそれを受け入れることはできません恐れています。 – pleft

+0

実際にあなたの他の質問へのリンクは、私の問題を解決するために私を導きました。多くのおかげで、正しい答えとしてこれをマーク! – pleft

関連する問題