2012-05-23 3 views
10

En uno de los proyectos tengo contenido no inglés (finlandés) disponible en los datos del formulario. Estamos utilizando JSF 2.0 con PrimeFaces. Tengo problemas al enviar los datos al servidor. Los datos se corrompen cuando envío el formulario. Solo los personajes finlandeses se están corrompiendo en eso.El envío de formulario UTF-8 en JSF está dañando los datos

¿Alguien ha enfrentado ya este problema y ha encontrado una solución?

+0

¿Está cargando un archivo durante el envío? Desarrollo aplicaciones en idioma checo y esto me pasó con el componente de carga de archivo IceFaces. Pero en los casos normales todo estaba bien. Puede usar Filter para establecer el juego de caracteres finlandés pero aún así es extraño el error –

Respuesta

20

Este es un problema conocido desde PrimeFaces 3.0. Se debe a un cambio en la forma en que comprueba si la solicitud HTTP actual es una solicitud ajax. Ha sido identificado por un parámetro de solicitud en lugar de un encabezado de solicitud. Cuando se recupera un parámetro de solicitud por primera vez antes de restaurar la vista JSF, todos los parámetros de solicitud se analizarán usando la codificación de caracteres predeterminada del servidor que a menudo es ISO-8859-1 en lugar de la codificación de caracteres predeterminada UTF-8 de JSF. Para una explicación detallada, vea Unicode input retrieved via PrimeFaces input components become corrupted.

Una de las soluciones es crear un filtro que hace un request.setCharacterEncoding("UTF-8").

+0

Me funcionó con la siguiente anotación: @WebFilter (filterName = "CharacterEncodingFilter", urlPatterns = {"/ *"}) – Kiavash

+2

@Kia: aparentemente su 'FacesServlet' no se ha mapeado en' * .xhtml', sino en algo más como '/ faces/*' o '* .jsf'. A continuación, debe cambiar el patrón de URL del filtro para que sea el mismo. El '/ *' coincidirá con ** cada solicitud HTTP **. Por cierto, solo '@WebFilter ("/* ")' también fue suficiente. – BalusC

Cuestiones relacionadas