Tengo un formulario de búsqueda en JSF que se implementa utilizando un componente de autocompletado RichFaces 4 y la siguiente página JSF 2 y Java Bean. Uso Tomcat 6 & 7 para ejecutar la aplicación.Codificación UTF-8 de parámetros GET en JSF
...
<h:commandButton value="#{msg.search}" styleClass="search-btn" action="#{autoCompletBean.doSearch}" />
...
En el AutoCompleteBean
public String doSearch() {
//some logic here
return "/path/to/page/with/multiple_results?query=" + searchQuery + "&faces-redirect=true";
}
Esto funciona bien siempre y cuando todo en el canto "searchQuery" String está en Latin-1, que no funciona si está fuera de América-1.
Por ejemplo, una búsqueda de "bodø" se codificará automáticamente como "bod% F8". Sin embargo, la búsqueda de "Kra Ðong" no funcionará porque no puede codificar "Ð".
Ahora he intentado varios enfoques diferentes para resolver esto, pero ninguno de ellos funciona.
- He intentado codificar el searchQuery yo mismo usando URLEncode, pero esto solo lleva a la doble codificación ya que% está codificado como% 25.
- He intentado usar java.net.URI para obtener la codificación, pero da el mismo resultado que URLEncode.
- He intentado encender UTF-8 en Tomcat usando URIEncoding = "UTF-8" en el Conector, pero esto solo empeora ese problema ya que los caracteres que no son ASCII no funcionan en absoluto.
Así que a mis preguntas:
- ¿Puedo cambiar la forma de JSF 2 codifica los parámetros GET?
- Si no puedo cambiar la forma en que JSF 2 codifica los parámetros GET, ¿puedo cambiar la codificación y hacerlo manualmente?
- ¿Estoy haciendo algo extraño aquí? Esto parece algo que debería ser compatible desde el primer momento, pero no puedo encontrar otros con el mismo problema.
Sí, eso funciona. ¡Gracias! – oyse
De nada :) – BalusC