3

window.open(url,"selectWindow","status=no,width=610,height=480,scrollbars=no")はJSFで使用しています。URLは次のようになります:

/abcxyz.jsf?param1=value1&param2=value2 

これは、次のようなポップアップウィンドウに表示されます。

/abcxyz.jsf?param1=value1&param2=value2

問題は、value2がその中にある文字列であるという&ことです。言う、value2 = ab&12value2として読み取られ、記号が原因でab&12壊れないようにするにはどうすればよいですか?ab&

4

1 に答える 1

3

URLエンコードする必要があります。プレーンJavaでは、それは

String encodedValue2 = URLEncoder.encode(value2, "UTF-8");

この&ようになり%26ます。文字セットは、サーバーが着信HTTP要求URIをデコードするために使用するように構成されているものと同じである必要があります(ただし、多くの場合、デフォルトでISO-8859-1になります)。

JSFは、およびで<f:param>使用する場合にもこれを実行しますが、のURLの生成には役立ちません。したがって、カスタムEL関数を使用するか、カスタムEL関数を作成して、バッキングBeanでこれを実行する必要があります。JSFユーティリティライブラリOmniFacesを使用する場合は、そのために使用できます。<h:outputLink><h:link>window.open()URLEncoder#{of:encodeURL()}

参照:

于 2013-03-26T11:41:39.497 に答える