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

Servlets/JSP Java Discussion :

Utiliser plusieurs fichiers properties


Sujet :

Servlets/JSP Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 77
    Par défaut Utiliser plusieurs fichiers properties
    Bonjour,


    J'ai une application (très mal foutue) qui utilise un fichier properties pour travailler dans deux langues.

    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
    	// properties file
    	ResourceBundle prop = null; // Resource bundle storage
    	String  bname = "../../properties/topic_" + LangLib + ".properties";
     
    	URL url = this.getClass().getClassLoader().getResource(bname);
     
    	if (null != url) 
    	{
        	try {
    	        String fname   = url.getFile();
    	        InputStream is = new FileInputStream(fname);
    	        prop           = (ResourceBundle) new PropertyResourceBundle(is);
    	        is.close();
         	} catch (Exception e) {
            	prop = null;
         	}
    	}
    	if (null == prop) {
    	   ekception = "probleme technique " + bname +  " pas disponible" ;
    	}
    Cette partie-là, je ne l'ai pas codée moi-même, on n'utilise pas struts, on utilise même pas les servlets mais en tout cas ça fonctionne.

    Cependant, on change un peu l'application et il faudrait que je puisse utiliser un fichier properties général (avec les traductions communes à toutes les pages) et un fichier properties spécifique à la page où je me trouve.

    Cependant, vu la façon de travailler, je ne sais pas comment faire pour pouvoir utiliser plusieurs fichiers properties.

    Avez-vous une solution? Sans servlet et sans struts de préférence, ça prendrait "trop de temps" pour tout changer etc, je suis obligée dans travailler comme ça, mais si vous avez un moyen plus simple pour les properties, je suis preneuse

    Merci d'avance.

  2. #2
    Membre émérite Avatar de Lorantus
    Homme Profil pro
    Consultant développeur indépendant / Java/VB/C(++)/ObjectPal
    Inscrit en
    Août 2007
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant développeur indépendant / Java/VB/C(++)/ObjectPal

    Informations forums :
    Inscription : Août 2007
    Messages : 599
    Par défaut
    Tu peux lire les "properties files" les uns derrière les autres. Il faut juste définir l'ordre de priorité de façon à avoir une "property" qui couvre l'autre.

    Il faut que tu crées une fonction -comme celle que tu nous montres- qui se charge de charger un "property file" dans les boundles. Le code que tu as montré est alors remplacé par une suite d'appel à cette fonction.

    Pour le code, il est un lourd... Il doit dater pour que le développeur ai codé les API presque tout lui-même -pas de critique, il fallait le faire !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 77
    Par défaut
    Merci, je vais regarder ça

    Malheureusement, le code ne date pas de plus d'un an, le codeur était pressé et a trouvé ça C'est pour ça que je me demandais s'il y avait une façon "propre" de charger un fichier properties.

    Merci encore

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 77
    Par défaut
    Voilà,

    J'ai regardé pour l'internationalisation d'une application web et je voudrais essayer dans le chap 24 tu tutoriel jmd, dans les cours et tutoriels Java : http://java.developpez.com/cours/



    Ce qui a l'air plus standard et moins "lourd", mais je voudrais utiliser des fichiers .properties qui se trouve dans un dossier spécifique de mon projet. Par exemple :
    • projet
      - Home
      - properties
      - images
      - etc


    Est-ce possible ou ce n'est utilisable qu'avec des fichiers properties du dossier des classes? (je ne sais d'ailleurs pas lequel c'est...j'ai un dossier WEB/INF mais il n'a pas de sous-dossier classes)

  5. #5
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Déposes tes fichiers de properties dans classes, s'il existe pas tu le crées, d'ailleurs bizarre qu'il soit pas là.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 77
    Par défaut
    J'ai joint un printscreen de mon arborescence, j'ai mis les fichiers properties manuellement dans le dossier WEB-INF\classes mais le dossier n'apparait pas (alors qu'il n'était déjà pas vide à la base) et l'application ne fonctionne toujours pas :/

    J'ai supprimé les trucs relatifs à struts (que je n'utilise pas), et ça ne plante plus, mais le dossier classes n'apparait toujours pas dans ecplise :/
    Images attachées Images attachées  

  7. #7
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Il faut passer par la vue "navigateur" si tu veux voir le répertoire classes, j'imagine que tu es sous eclipse, par la vue "Explorer" tu vois pas les classes compilées.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 77
    Par défaut
    Oki merci, ça fonctionne
    Le seul problème, c'est qu'on est plusieurs programmeurs à devoir travailler sur le même projet, et ce serait plus simple pour tout le monde (il y en a qui n'ont même pas encore appris le java...) si on pouvait changer l'endroit où le resourcebundle va chercher les properties, est-ce que c'est possible?

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 77
    Par défaut
    Rebonjour,

    J'ai trouvé sur internet un exemple qui pourrait combiner des fichiers properties : http://www.javaworld.com/javaworld/j...35.html?page=1

    J'ai testé dans mon application :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Properties defaultProps = new Properties();
        defaultProps.load(new FileInputStream(getServletContext().getRealPath("properties/topic_fr.properties")));
        String value2 = (String)defaultProps.get("documentation_technique");
        Properties props2 = new Properties(defaultProps);    
        props2.load(new FileInputStream(getServletContext().getRealPath("properties/Home_fr.properties")));
        String value = (String)props2.get("test");
     
        out.print("Value : "+value+" Value 2 : "+value2);
    Et ça me donne null pour "value" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Value : null Value 2 : Documentation technique
    Je ne comprends pas pourquoi ça ne fonctionne pas, quelqu'un a une idée pour pouvoir fusionner deux fichiers properties?

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 77
    Par défaut
    Bonjour,

    Un collègue m'a aidée pour ce problème de properties, je vous mets les codes ici, ça pourra peut-être aider quelqu'un


    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
    package tools;
     
    import java.util.*;
    import java.io.*;
     
     
    public class MultipleProperties {
     
      public static Properties CreateProperty(String[] lstPaths)
      {
          try
          {
     
            Properties newProperties = new Properties();
     
            // Create and recover the data of the list of properties
            for(String Path : lstPaths)
            {
                // Create a new property
                Properties newProperty = new Properties();
                newProperty.load(new FileInputStream(Path));
     
                // Recover the data of the new property
                for ( Enumeration e = newProperty.propertyNames(); e.hasMoreElements(); )
                {
                    // Recover a key of the property
                    String value = (String)e.nextElement();
                    // Initialization of a new record with the data of another property
                    newProperties.setProperty(value,newProperty.getProperty(value));
                }
            }
     
            // Return the concatanation of the properties
            return newProperties;
          }
          catch(Exception ex)
          {
            // Return null if there is a problem
            return new Properties();
          }
     
      }
    }
    Et je l'utilise comme ceci :

    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
    	if(langue.equals("1"))
    	{
    		LangLib = "nl";
    		Lang = "2" ;
    	}else{
    		LangLib = "fr";
    		Lang = "1" ;
    	}	
    	String uri = request.getRequestURI();	
    	String[] result = uri.split("/");
     
    	String[] paths = {	
    						getServletContext().getRealPath("properties/topic_"+LangLib+".properties"), 
    						getServletContext().getRealPath("properties/"+result[2]+"_"+LangLib+".properties")
    					};
     
    	Properties label = MultipleProperties.CreateProperty(paths);
    Merci pour votre aide

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

Discussions similaires

  1. plusieurs fichier properties pour une JSP
    Par francon81 dans le forum Struts 1
    Réponses: 1
    Dernier message: 15/02/2007, 16h00
  2. Utiliser plusieurs fichiers properties
    Par guilhemr dans le forum Struts 1
    Réponses: 5
    Dernier message: 05/10/2006, 10h04
  3. [JPox] Peut on utiliser plusieurs fichiers .jdo ?!
    Par MinsK dans le forum Persistance des données
    Réponses: 7
    Dernier message: 28/06/2005, 17h04
  4. [struts] utiliser plusieurs fichiers properties
    Par jaimepasteevy dans le forum Struts 1
    Réponses: 7
    Dernier message: 03/10/2003, 17h02

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