2012-06-24 20 views
6

Tengo una aplicación muy simple, hay un texto de entrada en mi página de índice y un botón para ir a page2.xhtml.UTF-8 en PrimeFaces 3.x

<h:body> 
     <h:form> 
      <h:inputText value="#{mainBean.testValue}"/> 
      <p:commandButton update="myoutput" value="ajax call" ajax="false"/> 
      <p:separator /> 
      <h:commandButton action="#{mainBean.gotoPageTwo}" value="goto Page2"/> 
      <br/> 
      <h:outputText value="#{mainBean.testValue}" id="myoutput"/> 
     </h:form> 
    </h:body> 
</html> 

He probado esta aplicación con PrimeFaces 2.2.1 y no hubo ningún problema. pero después de enviar cada uno de los botones anteriores, mis caracteres UTF-8 se destruirán. Probé filter pero no funciona. ¿Es un error en PrimeFaces 3.x? ¿Puede algún cuerpo resolver este problema?

+0

Ha intentado localizar dónde está el problema? ¿El servidor de aplicaciones envía UTF-8 a su navegador, pero los encabezados de respuesta dicen que es (por ejemplo) Latin1? ¿O el servidor de aplicaciones/marco convierte sus personajes a Latin1 antes de enviarlos al navegador? – millimoose

+0

Comprobé Content-Type con firebox y fue: text/html; charset = UTF-8. Tenga en cuenta que no hay ningún problema con Primefaces 2.2.1 – zorro6064

Respuesta

5

El ejemplo web.xml de la respuesta que ha encontrado en el foro PrimeFaces está incompleto. <filter-mapping> falta. Sin eso, el filtro ni siquiera se ejecutará. Añadir en consecuencia

<filter-mapping> 
    <filter-name>Character Encoding Filter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

Cuando ya se encuentra en Servlet 3.0 (Tomcat 7, Glassfish 3, etc), una alternativa es utilizar sólo la anotación @WebFilter en la clase. No olvides eliminar la entrada de filtro del web.xml.

@WebFilter("/*") 

Para una explicación de fondo de la causa de este problema de la codificación de caracteres durante la actualización PrimeFaces 2.x 3.x, consulta Unicode input retrieved via PrimeFaces input components become corrupted

+0

Tiene razón, pero mi respuesta no estaba completamente terminada. Tiendo a editar varias veces (como lo haces) :) – atamanroman

+0

Gracias. Mi problema resuelto pero en otra aplicación, en las páginas en las que hay carga de archivos de Primefaces, aparecerá un problema. De hecho, tengo dos filtros en web.xml y cuando hay p: carga en una página, el filtro de codificación de caracteres no funciona. ¿Cómo resolver esto? – zorro6064

+1

Asegúrese de que el filtro de codificación de caracteres esté correlacionado antes del filtro de carga del archivo PrimeFaces en 'web.xml'. – BalusC