2012-05-23 24 views
10

Projelerin birinde, ingilizce olmayan içerik (Fince) form verisinde kullanılabilir. PrimeFaces ile JSF 2.0 kullanıyoruz. Verileri sunucuya gönderirken sorun yaşıyorum. Formu gönderdiğimde veri bozuluyor. Bununla sadece Finli karakterler bozuluyor.UTF-8 formu göndermek bozan veri

Bu sorunu zaten gören ve bir çözüm bulmuş olan var mı?

+0

Gönderme sırasında bir dosya yüklüyor musunuz? Çek dilinde uygulamalar geliştiriyorum ve bu bana IceFaces dosya yükleme bileşeniyle oldu. Ama normal durumlarda her şey yolundaydı. Fin charset'i ayarlamak için Filter'i kullanabilirsiniz ama hala garip bir hata var –

cevap

20

Bu, PrimeFaces 3.0'dan beri bilinen bir sorundur. Mevcut HTTP isteğinin bir ajax isteği olup olmadığını nasıl kontrol ettiğiyle ilgili bir değişiklik nedeniyle oluşur. Bir istek başlığı yerine bir istek parametresi ile tanımlanmıştır. JSF görünümü geri yüklenmeden önce ilk kez bir istek parametresi alındığında, tüm istek parametreleri, JSF'nin UTF-8 kodlayan kendi varsayılan karakteri yerine genellikle ISO-8859-1 olan sunucunun varsayılan karakter kodlaması kullanılarak ayrıştırılır. Derinlemesine bir açıklama için bkz. Unicode input retrieved via PrimeFaces input components become corrupted.

Çözümlerden biri, request.setCharacterEncoding("UTF-8") numaralı bir filtre oluşturmaktır.

@WebFilter("*.xhtml") 
public class CharacterEncodingFilter implements Filter { 

    @Override 
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException { 
     request.setCharacterEncoding("UTF-8"); 
     chain.doFilter(request, response); 
    } 

    // ... 
} 
+0

Aşağıdaki açıklama ile benim için çalıştı: @WebFilter (filterName = "CharacterEncodingFilter", urlPatterns = {"/ *"}) Teşekkürler – Kiavash

+2

@Kia: görünüşe göre 'FacesServlet'' * .xhtml' üzerinde değil, '/ faces/*' veya '* .jsf' gibi bir şey üzerinde eşleştirilmemiş. Daha sonra, filtrenin URL modelini aynı şekilde değiştirmelisiniz. '/ *' Aslında her bir ** HTTP isteği ile eşleşecektir. Bu arada, sadece @WebFilter ("/ *") 'da yeterliydi. – BalusC

İlgili konular