RichFaces 4 オートコンプリート コンポーネントと次の JSF 2 ページおよび Java Bean を使用して実装された JSF の検索フォームがあります。Tomcat 6 & 7 を使用してアプリケーションを実行しています。
...
<h:commandButton value="#{msg.search}" styleClass="search-btn" action="#{autoCompletBean.doSearch}" />
...
AutoCompleteBean で
public String doSearch() {
//some logic here
return "/path/to/page/with/multiple_results?query=" + searchQuery + "&faces-redirect=true";
}
これは、「searchQuery」文字列を含むすべてが Latin-1 にある限りうまく機能しますが、Latin-1 の外にある場合は機能しません。
たとえば、「bodø」を検索すると、「bod%F8」として自動的にエンコードされます。ただし、「Ð」をエンコードできないため、「Kra Ðong」の検索は機能しません。
これを解決するためにいくつかの異なるアプローチを試しましたが、どれもうまくいきません。
- URLEncode を使用して自分で searchQuery をエンコードしようとしましたが、% が %25 としてエンコードされているため、これは二重エンコードにしかつながりません。
- java.net.URI を使用してエンコーディングを取得しようとしましたが、URLEncode と同じ結果が得られます。
- Connector で URIEncoding="UTF-8" を使用して Tomcat で UTF-8 をオンにしようとしましたが、ASCII 以外の文字がまったく機能しないため、問題が悪化するだけです。
だから私の質問に:
- JSF 2 が GET パラメータをエンコードする方法を変更できますか?
- JSF 2 が GET パラメータをエンコードする方法を変更できない場合、エンコードを無効にして手動で変更できますか?
- 私はここで奇妙なことをしていますか?これはそのままでサポートされるべきもののように思えますが、同じ問題を抱えている人は他に見つかりません。