IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Taglibs Java Discussion :

Utiliser les jstl fmt dans un servlet [JSTL]


Sujet :

Taglibs Java

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 26
    Points : 14
    Points
    14
    Par défaut Utiliser les jstl fmt dans un servlet
    Salut tout le monde !

    Encore débutant dans le monde java, j'ai besoin d'utiliser l'internationalisation dans les servlets (HttpServlet) pour gerer les messages d'erreurs retournés au JSP en multilangue.

    J'ai vu qu'il existe getLocalizedMessage mais j'ai besoin de récupérer le pagecontext et c'est la ou je sèche

    Merci de votre aide !

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Il faut utiliser la classe JspFactory et sa méthode getPageContext(). Mais attention car tout les PageContext créés de la sorte doivent être libéré par releasePageContext() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    JspFactory jspFactoty = JspFactory.getDefaultFactory();
    PageContext pageContext = jspFactoty.getPageContext( this /* la servlet */, request, response, null, true, PageContext.NO_BUFFER, false;
    try {
     
    	// Utilisation du PageContext
     
    } finally {
    	// Libération du PageContext
    	jspFactoty.releasePageContext(pageContext);
    }
    a++

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Je n'ai pas la valeur : PageContext.NO_BUFFER, j'ai mis 0 et ça fonctionne ...

    Par contre après un premier test rapido , ça me met ???identification.usr??? Je crois qu'il ne trouve pas le fichier de localisation ... bon je regarde après je vais manger c'était surtout pour te remercier

  4. #4
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Ton code fonctionne merci bcp !
    Récap pour ceux qui veulent utiliser les classes fmt dans une servlet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    // les objets request et response sont fournis lors de l'invocation du servlet
    JspFactory jspFactoty = JspFactory.getDefaultFactory();
    PageContext pageContext = jspFactoty.getPageContext(this, request, response, null, true, 0, false);
     
    LocaleSupport Lang = new LocaleSupport();
     
    // Affichage d'un message en fonction de la langue du navigateur
    System.out.println(Lang.getLocalizedMessage);(pageContext,"clef","valeur")
     
    jspFactoty.releasePageContext(pageContext);
    Par contre j'ai 2 petites questions :

    1. Est-il possible de faire ça dans une classe normale alors qu'il n'y a pas d'objet (HttpServletRequest & HttpServletResponse) , peut-on faire fonctionner ça avec des simples HttpResponse & HttpRequest ??
    2. Eclipse emet une alerte sur l'utilisation de la méthode getLocalizedMessage comme quoi elle n'est pas accessible en static

    @+

  5. #5
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par jokerparis
    Est-il possible de faire ça dans une classe normale alors qu'il n'y a pas d'objet (HttpServletRequest & HttpServletResponse) , peut-on faire fonctionner ça avec des simples HttpResponse & HttpRequest ??
    Je ne sais pas... je pense que cela devrait marcher mais c'est à vérifier...

    Citation Envoyé par jokerparis
    Eclipse emet une alerte sur l'utilisation de la méthode getLocalizedMessage comme quoi elle n'est pas accessible en static
    getLocalizedMessage() est une méthode static, elle doit donc être utilisé de manière static et non pas via une instance :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String text = LocaleSupport.getLocalizedMessage(pageContext,"clef","valeur");

    De plus :
    1. Evites les noms de variable commençant avec une majuscule : c'est réservé aux noms de classe !
    2. Utilises un bloc try/finally comme dans mon exemple. au moins tu es sûr de ne pas oublier de libérer les ressources du pagecontext...


    a++

  6. #6
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Ok merci pour les conseils !

    Pour le point 1, il m'a suffit de passer le pageContext à la méthode de la classe et ça marche

    Sais tu si le fait de passer des objets comme HttpResponse & Request est une pratique courante ou plutot à éviter ??

    Thx !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Utilisation d'une classe dans une servlet
    Par stokoma1981 dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 28/09/2006, 15h11
  2. Utiliser les touches flèche dans un controle Edit
    Par Henri dans le forum Windows
    Réponses: 6
    Dernier message: 26/05/2006, 22h32
  3. Réponses: 2
    Dernier message: 12/05/2006, 11h07
  4. Utiliser les forms Access dans un projet ADP -> SQL SERVE
    Par _developpeur_ dans le forum Projets ADP
    Réponses: 12
    Dernier message: 09/12/2005, 12h37
  5. Réponses: 2
    Dernier message: 17/09/2005, 17h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo