Mam formularz wyszukiwania w JSF, który jest zaimplementowany za pomocą składnika autouzupełniania RichFaces 4 i następującej strony JSF 2 i komponentu Java bean. Używam Tomcat 6 & 7, aby uruchomić aplikację.Kodowanie UTF-8 parametrów GET w JSF
...
<h:commandButton value="#{msg.search}" styleClass="search-btn" action="#{autoCompletBean.doSearch}" />
...
W AutoCompleteBean
public String doSearch() {
//some logic here
return "/path/to/page/with/multiple_results?query=" + searchQuery + "&faces-redirect=true";
}
Działa to dobrze, tak długo, jak wszystko się withing "SEARCHQUERY" łańcuch jest w Latin-1, to nie działa, jeśli jest poza Latin-1.
Na przykład wyszukiwanie słowa "bodø" zostanie automatycznie zakodowane jako "bod% F8". Jednak wyszukiwanie "Kra Ðong" nie będzie działać, ponieważ nie można zakodować "Ð".
Próbowałem teraz kilka różnych podejść, aby rozwiązać ten problem, ale żaden z nich nie działa.
- Próbowałem kodującego SEARCHQUERY mój własny, używając urlencode, ale to tylko prowadzi do podwójnego kodowania od% jest zakodowany jako% 25.
- Próbowałem użyć java.net.URI, aby uzyskać kodowanie, ale daje taki sam wynik jak URLEncode.
- Próbowałem włączyć kodowanie UTF-8 w Tomcat za pomocą URIEncoding = "UTF-8" w łączniku, ale to tylko pogarsza ten problem, ponieważ wtedy znaki nie-ascii w ogóle nie działają.
Więc na moje pytania:
- mogę zmienić sposób JSF 2 koduje parametry GET?
- Jeśli nie mogę zmienić sposobu, w jaki JSF 2 koduje parametry GET, czy mogę włączyć kodowanie i zrobić to ręcznie?
- Czy robię coś, co tutaj jest dziwne? Wydaje się, że to coś, co powinno być obsługiwane natychmiast, ale nie mogę znaleźć żadnych innych osób z tym samym problemem.
Tak, to działa. Dzięki! – oyse
Nie ma za co :) – BalusC