2012-06-24 14 views
6

Tôi có một ứng dụng rất đơn giản, có một inputtext trong trang chỉ mục của tôi và một nút để đi đến page2.xhtml.UTF-8 trong 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> 

Tôi đã thử nghiệm ứng dụng này với PrimeFaces 2.2.1 và không có vấn đề gì. nhưng sau khi gửi từng nút trên, các ký tự UTF-8 của tôi sẽ hủy. Tôi đã thử nghiệm filter nhưng không hoạt động. Đây có phải là lỗi trong PrimeFaces 3.x không? Có thể cơ thể nào giải quyết vấn đề này không?

+0

Các bạn đã cố gắng để bản địa hoá nơi mà vấn đề là gì? Máy chủ ứng dụng có gửi UTF-8 tới trình duyệt của bạn không, nhưng tiêu đề phản hồi có nói là nó (ví dụ: Latin1 không? Hay máy chủ ứng dụng/khung công tác chuyển đổi các ký tự của bạn sang Latin1 trước khi gửi chúng tới trình duyệt? – millimoose

+0

Tôi đã chọn Loại nội dung có hộp đèn và là: text/html; charset = UTF-8. Lưu ý rằng không có vấn đề gì với các nguyên tố 2.2.1 – zorro6064

Trả lời

5

Ví dụ về web.xml câu trả lời bạn tìm thấy tại diễn đàn PrimeFaces chưa hoàn thành. Thiếu <filter-mapping>. Không có điều đó, bộ lọc thậm chí sẽ không chạy. Thêm nó cho phù hợp

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

Khi bạn đã có trên Servlet 3.0 (Tomcat 7, Glassfish 3, vv), một sự thay thế là sử dụng chỉ là @WebFilter chú thích trên lớp. Đừng quên xóa mục nhập bộ lọc khỏi web.xml.

@WebFilter("/*") 

Đối với một lời giải thích nền tảng của nguyên nhân gây ra vấn đề mã hóa ký tự này trong thời gian nâng cấp PrimeFaces 2.x-3.x, xem thêm Unicode input retrieved via PrimeFaces input components become corrupted

+0

Bạn nói đúng, nhưng câu trả lời của tôi chưa hoàn tất. Tôi có xu hướng chỉnh sửa nhiều lần (như bạn) :) – atamanroman

+0

Cảm ơn. Vấn đề của tôi đã được giải quyết. nhưng trong ứng dụng khác, trong các trang có tệp tải lên của thủ tướng, sự cố sẽ xuất hiện. Trong thực tế, tôi có hai bộ lọc trong web.xml và khi có p: tải lên trong một trang, bộ lọc mã hóa ký tự không hoạt động. Làm thế nào giải quyết điều này? – zorro6064

+1

Đảm bảo rằng bộ lọc mã hóa ký tự được ánh xạ trước bộ lọc tải lên tệp PrimeFaces trong 'web.xml'. – BalusC