ResourceBundle da Java/Struts e sostituire le espressioni
-
09-06-2019 - |
Domanda
Se dispongo di un file delle proprietà del pacchetto di risorse:
A.proprietà:
thekey={0} This is a test
E poi ho il codice Java che carica il pacchetto di risorse:
ResourceBundle labels = ResourceBundle.getBundle("A", currentLocale);
labels.getString("thekey");
Come posso sostituire il testo {0} con un valore
labels.getString("thekey", "Yes!!!");
In modo tale che l'output risulti come:
Yes!!! This is a test.
Non esistono metodi che facciano parte di Resource Bundle per eseguire questa operazione.Inoltre, sono in Struts, esiste un modo per utilizzare MessageProperties per eseguire la sostituzione.
Soluzione
La classe che stai cercando è java.text.MessageFormat;in particolare, chiamando
MessageFormat.format("{0} This {1} a test", new Object[] {"Yes!!!", "is"});
O
MessageFormat.format("{0} This {1} a test", "Yes!!!", "is");
sarà di ritorno
"Yes!!! This is a test"
[Purtroppo però non posso aiutarti con la connessione Struts Questo sembra rilevante.]
Altri suggerimenti
C'è la classe org.apache.struts.util.MessageResources con vari metodi getMessage, alcuni accettano argomenti da inserire nel messaggio vero e proprio.
Per esempio.:
messageResources.getMessage("thekey", "Yes!!!");