2012-06-24 8 views
6

私は非常に単純なアプリケーションを持っています。インデックスページにはinputtextがあり、page2.xhtmlにはボタンがあります。PrimeFaces 3.xのUTF-8

<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> 

私はこのアプリケーションをPrimeFaces 2.2.1でテストしましたが、問題はありませんでした。 上記の各ボタンを送信した後、私のUTF-8文字は破棄されます。 filterをテストしましたが動作しません。 PrimeFaces 3.xのバグですか? 誰でもこの問題を解決できますか?

+0

は、問題がどこにあるローカライズしようとしたことがありますか?アプリケーションサーバーはブラウザにUTF-8を送信しますが、レスポンスヘッダーにはLatin1などと表示されますか?または、ブラウザに送る前に、appserver/frameworkが文字をLatin1に変換しますか? – millimoose

+0

FireboxでContent-Typeをチェックしました。それは:text/html; charset = UTF-8でした。プライムフェイスに問題はないことに注意してください。2.2.1 – zorro6064

答えて

5

web.xml PrimeFacesフォーラムで見つかった回答の例は不完全です。 <filter-mapping>がありません。それがなければ、フィルタはまったく動作しません。あなたはサーブレット3.0(Tomcatの7、Glassfishの3、など)にすでにたら、それを追加するに応じて

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

、代替クラスにちょうど@WebFilterアノテーションを使用することです。フィルターの項目をweb.xmlから削除することを忘れないでください。 PrimeFaces 2.xの-3.xのアップグレード時にこの文字エンコーディングの問題の原因の背景説明については

@WebFilter("/*") 

、も参照Unicode input retrieved via PrimeFaces input components become corrupted

+0

あなたは正しいですが、私の答えは完全には終わっていません。私はあなたと同じように複数回編集する傾向があります:) – atamanroman

+0

ありがとう。私の問題は解決しました。他のアプリケーションでは、プライムフェイスファイルアップロードがあるページで、問題が表示されます。実際にはweb.xmlに2つのフィルタがあり、ページにp:uploadがあると、文字エンコーディングフィルタは機能しません。どのようにこれを解決する? – zorro6064

+1

文字エンコードフィルタが 'web.xml'のPrimeFacesファイルアップロードフィルタの前にマップされていることを確認してください。 – BalusC