web-dev-qa-db-fra.com

Puis-je référencer une autre propriété dans un fichier de propriétés (utilisez $ {property})

Duplicata possible:
Comment référencer une autre propriété dans Java.util.Properties?

regardez mon "file.properties":

key1= My name is
key2= ${key1} Martin !

Pourquoi quand j'obtiens la valeur de "key2" mon résultat est "$ {key1} Martin!" contrairement à "Mon nom est Martin!"

=> Je programme en Java 6
=> J'utilise Java.util.Properties

46
Martin Magakian

Vous voudrez peut-être regarder la configuration Apache,

http://commons.Apache.org/configuration/

Parmi les nombreuses fonctionnalités qu'il prend en charge, il y a Interpolation variable .

29
ZZ Coder

Ce que vous voulez faire est impossible en utilisant la classe Java Properties .

Les clés de propriété et les valeurs sont simplement des chaînes. Aucun traitement ne leur arrive, vous ne pouvez donc pas faire référence à une autre valeur dans une valeur.

14
Thomas Owens

Les fichiers Ant sont des scripts; les fichiers de propriétés sont des ensembles de chaînes.

Le but principal des fichiers de propriétés est de servir de conteneurs de chaînes pour le texte traduisible. Les chaînes de format généralement utilisées dans les regroupements de ressources utilisent un système basé sur un index. Lorsque la chaîne est traduite, l'ordre des paramètres peut être modifié dans les versions traduites de la chaîne sans avoir à modifier le code Java.

String what = "Hello";
String who = "Martin";
System.out.println(MessageFormat.format("{0}, {1}!", what, who));
System.out.println(MessageFormat.format("{1}, {0}!", what, who));

Production:

Hello, Martin!
Martin, Hello!

Pour des cas d'utilisation comme celui-ci, il ne serait pas judicieux d'encapsuler la fonctionnalité dans la classe Propriétés car les chaînes ont généralement besoin de données de l'application. La classe MessageFormat peut être utilisée pour effectuer la substitution.

Ce type de formatage ne doit pas être confondu avec les autres options de formatage spécifiées par Formatter :

System.out.format("%s, %s!%n", what, who);
1
McDowell