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

JSF Java Discussion :

JSF: localiser resource bundle


Sujet :

JSF Java

  1. #1
    Membre expérimenté Avatar de Roy Miro
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 273
    Par défaut JSF: localiser resource bundle
    Bonjour,

    J'ai créé un petit projet, avec Netbeans, en JSF et Spring dont l'arborescence se trouve en PJ:

    Ma page index.jsp (dans WEB-INF/jsp) est censée aller chercher ses libellés dans le fichier messages.properties (dans le package java resource):

    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
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
    <f:loadBundle basename="resource.messages" var="msg"/>
    
    
    <!--<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/loose.dtd"> -->
    
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>Welcome to Spring Web MVC project</title>
        </head>
        
        <body>
            <p>Hello! This is the default welcome page for a Spring Web MVC project.</p>
            <p><i>To display a different welcome page for this project, modify</i>
              <tt>index.jsp</tt> <i>, or create your own welcome page then change
              the redirection in</i> <tt>redirect.jsp</tt> <i>to point to the new
              welcome page and also update the welcome-file setting in</i>
              <tt>web.xml</tt>.</p>
         <f:view>
         <h1>
          <h:outputText value="#{msg.inputname_header}"/>
         </h1>
         <h:form id="helloForm">
          <h:outputText value="#{msg.prompt}"/>
          <h:inputText value="#{personBean.personName}" />
          <h:commandButton action="greeting" value="#{msg.button_text}" />
         </h:form>
       </f:view>
    
    
        </body>
    </html>
    Je déclare ce "resource bundle" dans mon faces-config.xml:

    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
    <?xml version='1.0' encoding='UTF-8'?>
    
    <faces-config version="1.2"
                  xmlns="http://java.sun.com/xml/ns/javaee"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">
        <application>
            <locale-config>
                <default-locale>en</default-locale>
                <supported-locale>en</supported-locale>
            </locale-config>
            <message-bundle>
                resource.messages
            </message-bundle>
        </application>
        <navigation-rule>
            <from-view-id>/jsp/index.jsp</from-view-id>
            <navigation-case>
                <from-outcome>greeting</from-outcome>
                <to-view-id>/jsp/greeting.jsp</to-view-id>
            </navigation-case>
        </navigation-rule>
        <managed-bean>
            <managed-bean-name>personBean</managed-bean-name>
            <managed-bean-class>bean.PersonBean</managed-bean-class>
            <managed-bean-scope>request</managed-bean-scope>
        </managed-bean>
    </faces-config>
    Or, lorsque j'arrive sur index.jsp, j'ai l'erreur suivante:

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/jsp/index.jsp at line 4
     
    1: <%@page contentType="text/html" pageEncoding="UTF-8"%>
    2: <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
    3: <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
    4: <f:loadBundle basename="resource.messages" var="msg"/>
    5: 
    6: 
    7: <!--<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
     
     
    Stacktrace:
    	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:167)
    	org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:239)
    	org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1158)
    	org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:900)
    	org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:808)
    	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:476)
    	org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:431)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
     
    cause mère
     
    java.lang.NullPointerException
    	com.sun.faces.taglib.jsf_core.LoadBundleTag.doStartTag(LoadBundleTag.java:130)
    	org.apache.jsp.WEB_002dINF.jsp.index_jsp._jspx_meth_f_005floadBundle_005f0(index_jsp.java:128)
    	org.apache.jsp.WEB_002dINF.jsp.index_jsp._jspService(index_jsp.java:75)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:167)
    	org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:239)
    	org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1158)
    	org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:900)
    	org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:808)
    	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:476)
    	org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:431)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    Comme s'il ne parvenait pas à localiser mon fichier properties...

    Pour info, voici son contenu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    # To change this template, choose Tools | Templates
    # and open the template in the editor.
    inputname_header=JSF KickStart
    prompt=Tell us your name:
    greeting_text=Welcome to JSF
    button_text=Say Hello
    sign=!
    D'après mes recherches, c'est un problème récurrent. Mais en vérifiant les points indiqués, je ne vois pas là où ça pèche.

    Merci de votre aide!

    EDIT: je travaille avec Tomcat 6 et j'ai le même souci lorsque je mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <f:loadBundle basename="resource.messages" var="msg"/>
    dans le bloc <f:view> dans la jsp.
    Images attachées Images attachées  

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    regarde s'il est bien déployé avec les classes, tu peux créer un avec le nom messages_en.properties qui correspond à ton locale par défaut.

  3. #3
    Membre expérimenté Avatar de Roy Miro
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 273
    Par défaut
    Merci de ta réponse. Je vais vérifier ça.

  4. #4
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 2
    Par défaut
    Est-ce que tu as trouvé la solution, moi j'ai un problème de détection en classpath:
    <f:loadBundle basename="resources.messages" var="msgs"/>
    il trouve pas ressources.messages dans la class path, vu que l'ai mis en même niveau que les packages. J'ai crée un source folder que j'ai appelé resources et dedans j'ai mis messages_fr.properties et messages_en.properties
    dans le faces-config.xml j'ai mis ce qu'il faut mettre :
    <application>
    <locale-config>
    <default-locale>fr</default-locale>
    <supported-locale>en</supported-locale>
    </locale-config>
    <message-bundle>resources.messages</message-bundle>
    </application>

    Aidez-moi svp

  5. #5
    Membre expérimenté Avatar de Roy Miro
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 273
    Par défaut
    Bonjour,

    Dans mon faces-config.xml, j'ai l'élément suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     <application>
            <resource-bundle>
                      <base-name>resource.messages</base-name>
                       <var>msg</var>
             </resource-bundle>
             <locale-config>
                       <default-locale>en</default-locale>
                       <supported-locale>fr</supported-locale>
              </locale-config>
    </application>
    je n'ai plus les lignes suivantes dans mes jsp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <f:loadBundle var="msg" basename="resource.messages">
    Dans mes sources java, j'ai le package resource et dedans les fichiers messages_en.properties et messages_fr.properties et ça fonctionne finalement.

    Mais quel est ton message d'erreur exact? Montre aussi les code de ta jsp (là où tu fais appel à JSF et plus particulièrement les resource bundle).

    Pense à utiliser la balise "code".

    Bon courage.

  6. #6
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 2
    Par défaut
    Salut Roy-miro c'était en fait resource-bundle que j'aurai dû utilisé au lieu de message-bundle et de supprimer le tag loadbundle de jsf.

    Merci beaucoup pour ta réponse et bonne continuation

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

Discussions similaires

  1. Définir plusieurs resources bundle sur un report
    Par ladine35 dans le forum iReport
    Réponses: 2
    Dernier message: 01/12/2013, 19h57
  2. [Netbeans platform] Utiliser un resource bundle personalisé.
    Par Whisperer dans le forum NetBeans Platform
    Réponses: 0
    Dernier message: 20/09/2009, 02h06
  3. resource-bundle et JNDI
    Par piopium dans le forum JSF
    Réponses: 0
    Dernier message: 28/08/2009, 10h47
  4. Réponses: 8
    Dernier message: 15/10/2006, 20h02
  5. Réponses: 4
    Dernier message: 14/04/2005, 13h59

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