2012-06-24 5 views
6

Ich habe eine sehr einfache Anwendung, gibt es einen Eingabetext in meiner Indexseite und eine Schaltfläche, um zu page2.xhtml zu gehen.UTF-8 in 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> 

Ich habe diese Anwendung mit PrimeFaces 2.2.1 getestet und es gab kein Problem. aber nach dem Senden jeder der oben genannten Schaltfläche, werden meine UTF-8-Zeichen zerstören. Ich habe filter getestet, aber es funktioniert nicht. Ist es ein Fehler in PrimeFaces 3.x? Kann irgendein Körper dieses Problem lösen?

+0

Haben Sie zu lokalisieren versucht, wo das Problem liegt? Sendet der Anwendungsserver UTF-8 an Ihren Browser, aber die Antwort-Header sagen, dass es (z. B.) Latin1 ist? Oder konvertiert der appserver/framework Ihre Zeichen in Latin1, bevor Sie sie an den Browser senden? – millimoose

+0

Ich habe Content-Type mit Firebox überprüft und es war: text/html; charset = UTF-8. Beachten Sie, dass es kein Problem mit Primzahlen gibt 2.2.1 – zorro6064

Antwort

5

Das web.xml Beispiel der Antwort, die Sie im PrimeFaces-Forum gefunden haben, ist unvollständig. Die <filter-mapping> fehlt. Ohne diesen wird der Filter überhaupt nicht laufen. In dieser entsprechend

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

Wenn Sie bereits auf Servlet 3.0 (Tomcat 7, Glassfish 3, usw.), eine Alternative ist nur die @WebFilter Anmerkung auf der Klasse zu verwenden. Vergessen Sie nicht, den Filtereintrag von web.xml zu entfernen.

@WebFilter("/*") 

Für einen Hintergrund Erklärung der Ursache dieser Zeichencodierung Problem während PrimeFaces 2.x-3.x-Upgrade finden Sie auch Unicode input retrieved via PrimeFaces input components become corrupted

+0

Sie haben Recht, aber meine Antwort war nicht vollständig abgeschlossen. Ich neige dazu, mehrere Male zu bearbeiten (wie Sie) :) – atamanroman

+0

Danke. Mein Problem ist gelöst. aber in anderen Anwendungen, in den Seiten, die es gibt, fileupload der Oberseiten, Problem erscheint. Tatsächlich habe ich zwei Filter in web.xml und wenn es p: upload auf einer Seite gibt, funktioniert der Zeichencodierungsfilter nicht. Wie löst man das? – zorro6064

+1

Stellen Sie sicher, dass der Zeichencodierungsfilter vor dem Filter zum Hochladen der PrimeFaces-Datei in "web.xml" zugeordnet ist. – BalusC