ResourceBundle à partir de Java / Struts et remplacer les expressions
-
09-06-2019 - |
Question
Si j'ai un fichier de propriétés de regroupement de ressources:
A.properties:
thekey={0} This is a test
Et puis j'ai le code Java qui charge le bundle de ressources:
ResourceBundle labels = ResourceBundle.getBundle("A", currentLocale);
labels.getString("thekey");
Comment remplacer le texte {0} par une valeur
labels.getString("thekey", "Yes!!!");
Tels que la sortie apparaît sous la forme:
Yes!!! This is a test.
Aucune méthode faisant partie du regroupement de ressources ne permet cela. De plus, je suis dans Struts, existe-t-il un moyen d'utiliser MessageProperties pour effectuer le remplacement?
La solution
La classe que vous recherchez est java.text.MessageFormat; en particulier, en appelant
MessageFormat.format("{0} This {1} a test", new Object[] {"Yes!!!", "is"});
ou
MessageFormat.format("{0} This {1} a test", "Yes!!!", "is");
reviendra
"Yes!!! This is a test"
[Malheureusement, je ne peux pas vous aider avec la connexion Struts, bien que cette semble pertinent.]
Autres conseils
Il existe la classe org.apache .struts.util.MessageResources avec diverses méthodes getMessage, certaines d’entre elles prennent des arguments à insérer dans le message réel.
Par exemple:
messageResources.getMessage("thekey", "Yes!!!");