2008-09-15 15 views
4

Bir Kaynak paket özellik dosyası varsa:Java/Struts gelen ResourceBundle ve değiştirme ifadeleri

A.properties: thekey = {0} Bu bir test

Ve sonra o yükleri java kodu var kaynak paketi: bazı değeri {0} metni değiştirmek nasıl

ResourceBundle labels = 
    ResourceBundle.getBundle("A", currentLocale); 
labels.getString("thekey"); 

labels.getString ("thekey", "Evet !!!");

Böyle çıkış olarak ortaya çıkıyor ki:

Evet !!! Bu bir test.

Bunu yapmak için Kaynak Paketinin bir parçası olan hiçbir yöntem yoktur. Ayrıca, Struts'tayım, yerine geçmek için MessageProperties'i kullanmanın bir yolu var.

cevap

11

Aradığınız sınıf java.text.MessageFormat; [this alakalı görünüyor olsa da, ne yazık ki, Struts bağlantısı ile yardımcı olamaz.] Spesifik olarak,

MessageFormat.format("{0} This {1} a test", new Object[] {"Yes!!!", "is"}); 

veya

MessageFormat.format("{0} This {1} a test", "Yes!!!", "is"); 

arayarak

"Yes!!! This is a test" 

dönecektir

2

Bazı metodlar getMessage olan org.apache.struts.util.MessageResources sınıfı vardır, bazıları gerçek mesaja eklenecek argümanlar.

Örn .:

messageResources.getMessage("thekey", "Yes!!!");