Salut
J' ai eu beau chercher un peu partout sur le net, je n'ai toujours pas trouvé. Est ce que quelqu'un sait si on peut faire des dépendances dans les fichiers .properties du genre :
mavariable1 = qqchose
mavariable2=${mavariable1}autrechose
Salut
J' ai eu beau chercher un peu partout sur le net, je n'ai toujours pas trouvé. Est ce que quelqu'un sait si on peut faire des dépendances dans les fichiers .properties du genre :
mavariable1 = qqchose
mavariable2=${mavariable1}autrechose
Salut,
Cela n'existe pas en standard, mais c'est assez simple à simuler en utilisant les regexp, par exemple :
a++
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
49
50
51 class MyProperties extends Properties { /** * Redéfinition de getProperty() qui évalue la chaine selon * avant de la retourner */ @Override public String getProperty(String key) { String value = super.getProperty(key); if (value!=null) { // On évalue la chaine obtenu value = resolve(value); } return value; } /** Pattern permettant de rechercher tous les ${} */ private final Pattern pattern = Pattern.compile("\\$\\{(.*?)\\}"); /** * Cette méthode permet de remplacer les ${} par leurs valeurs */ private String resolve(String input) { // On recherche toutes les occurences de ${} Matcher matcher = this.pattern.matcher(input); // Si au moins une occurence est trouvé : if (matcher.find()) { // Il faut reconstruire la chaine // --> On utilise un StringBuffer : StringBuffer sb = new StringBuffer(); do { // On récupère le nom de la clef String key = matcher.group(1); // On récupère sa valeur (en conservant le ${} si absent) : String value = getProperty(key, matcher.group()); // Et on complète le buffer en effectuant le remplacement : matcher.appendReplacement(sb, Matcher.quoteReplacement(value)); } while (matcher.find()); // Code necessaire pour rajouter la fin de la chaine : matcher.appendTail(sb); // Et on retourne la chaine ainsi formé : return sb.toString(); } // Sinon (aucun ${} présent), on renvoi la chaine telle quelle : return input; } }
Ok merci pour ta réponse, je vais essayer comme ça!
Bonjour,
quand on fait un paramétrage XML, on peut avoir le même genre de chose avec des entités, (&mavalue; plutôt que ${mavalue} ) avec en plus un système d'inclusion entre fichiers XML bien pratique.
(ce qui oblige à faire un parsing XML évidemment)
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager