Hi,
look at my "file.properties":
key1= My name is
key2= ${key1} Martin !
Why when I get the value of "key2" my result is "${key1} Martin !" unlike "My name is Martin !"
=> I program in Java 6
=> I use java.util.Properties
Hi,
look at my "file.properties":
key1= My name is
key2= ${key1} Martin !
Why when I get the value of "key2" my result is "${key1} Martin !" unlike "My name is Martin !"
=> I program in Java 6
=> I use java.util.Properties
What you want to do is impossible using the Java Properties
class.
Property keys and values are simply Strings. No processing happens to them, so you can't refer to another value in a value.
You might want look at Apache Configuration,
http://commons.apache.org/configuration/
Among many features it supports is the Variable Interpolation.
Ant files are scripts; properties files are buckets of strings.
The primary purpose of properties files is to serve as string containers for translatable text. The format strings typically used in resource bundles use an index-based system. When the string is translated, the order of the parameters can be changed in translated versions of the string without needing to change the Java code.
String what = "Hello";
String who = "Martin";
System.out.println(MessageFormat.format("{0}, {1}!", what, who));
System.out.println(MessageFormat.format("{1}, {0}!", what, who));
Output:
Hello, Martin!
Martin, Hello!
For use cases like this, it would not make sense to encapsulate the functionality in the Properties class because the strings usually need data from the application. The MessageFormat class can be used to perform the substitution.
This type of formatting should not be confused with the other formatting options as specified by Formatter:
System.out.format("%s, %s!%n", what, who);