Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JSF Java Discussion :

[PrimeFaces] Problème d'accent


Sujet :

JSF Java

  1. #1
    Membre régulier
    [PrimeFaces] Problème d'accent
    Bonjour à tous,

    Je rencontre avec Primefaces (3.2) quelques problèmes avec les accents mais uniquement dans certains cas avec Google Chrome et IE (aucun soucis avec Firefox).

    Si mon formulaire est "posté" directement, je n'ai aucun soucis avec les accents.
    Cependant, si au moment où je poste mon formulaire, j'affiche une fenêtre de confirmation, les accents des différents champs se transforment (é devient é).

    J'ai également le soucis sur le composant dataTable et plus précisément avec le "incell editing". Depuis cette fonctionnalité, dès que j'enregistre ma ligne, les accents ne passent également pas (toujours sous IE et Chrome, aucun soucis avec Firefox).

    J'ai tenté plusieurs choses, mais rien y fait...

    Dans mes fichiers xhtml j'ai tenté d'insérer les balises suivantes :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml version="1.0" encoding="ISO-8859-15"?>
    <?xml version="1.0" encoding="ISO-8859-1"?>


    Dans mon fichier web.xml, j'ai tenté les balises suivantes :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <context-param>
        <param-name>default.charset</param-name>
        <param-value>utf-8</param-value>
    </context-param>
     
    <context-param>
        <param-name>default.charset</param-name>
        <param-value>iso-8859-15</param-value>
    </context-param>
     
    <context-param>
        <param-name>default.charset</param-name>
        <param-value>iso-8859-1</param-value>
    </context-param>


    et finalement, entre les balises <head></head> des fichiers html, j'ai tenté ça :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
    <meta http-equiv="content-type" content="text/html;charset=ISO-8859-15" />
    <meta http-equiv="content-type" content="text/html;charset=ISO-8859-1" />


    Le problème semble donc survenir lorque la page est rafraichie partiellement par une requête AJAX (affichage d'une popup et incell editing).

    Si quelqu'un connaît une solution, je suis preneur !

  2. #2
    Membre régulier
    J'ai finalement trouvé !

    Suffit de faire un filtre comme indiqué ici.

    Voici la classe Java :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    import java.io.IOException;
     
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
     
    public class EncodeFilter implements Filter{
    	@SuppressWarnings("unused")
    	private FilterConfig filterConfig = null;
     
    	@Override
    	public void destroy() {
    		this.filterConfig = null;	
    	}
     
    	@Override
    	public void doFilter(final ServletRequest request, final ServletResponse response, FilterChain chain) throws IOException, ServletException {
    		// Setting the character set for the request
    		request.setCharacterEncoding("UTF-8");
     
    		// pass the request on
    		chain.doFilter(request, response);
     
    		// Setting the character set for the response
    		response.setContentType("text/html; charset=UTF-8");
    	}
     
    	@Override
    	public void init(final FilterConfig filterConfig) throws ServletException {
    		this.filterConfig = filterConfig;	
    	}
    }


    et la déclaration dans le web.xml :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <filter>
    		<filter-name>EncodeFilter</filter-name>
    		<filter-class>chemin_package.EncodeFilter</filter-class>
    	</filter>
     
    	<filter-mapping>
    		<filter-name>EncodeFilter</filter-name>
    		<url-pattern>/*</url-pattern>
    	</filter-mapping>

###raw>template_hook.ano_emploi###