2009-10-20 10 views
5

Pracuję nad projektem z Struts i zastanawiałem się, czy można uzyskać obiekt zasobów wiadomości w serwletie, który jest zawarty w tym samym projekcie.Jak mogę uzyskać obiekt zasobów komunikatów w serwlecie?

Nie ma możliwości uzyskania tego obiektu za pomocą metody getResources(HTTPServletRequest), ponieważ aplet nie rozszerza klasy Action. Czy jest jakiś sposób na zrobienie tego?

Z góry dziękuję.

Odpowiedz

6

Cóż, w końcu udało mi się to zrobić. Jeśli ktoś utknie w tym samym problemie, oto rozwiązanie: użyj klasy java.util.ResourceBundle w swoim apletem.

Trzeba tylko stworzyć ResourceBundle przekazując nazwę klasy właściwości i lokalizacji, której chcesz użyć, jak widać poniżej:

ResourceBundle rb = new ResourceBundle("com.foo.package.theClass", myLocale); 
//And then get the messages from the rb object 
rb.getMessage("myPropertiesKey"); 
+3

ResourceBundle jest abstrakcyjny (przynajmniej w Javie 6). Musisz wywołać ResourceBundle.getBundle ("com.foo.package.theClass", myLocale) zamiast tworzyć instancję klasy. –

+0

Masz całkowitą rację, Jeremy. Trzeba to zrobić w ten sposób, dzięki za wskazanie tego !! –

+0

Nie ma metody 'getMessage()' w klasie 'java.util.ResourceBundle', ale' getString() 'istnieje. Wielkie dzięki za dobrą radę, to naprawdę działa. –

-1

Obiekt MessageResources-object jest przechowywany w zasięgu żądania za pomocą klucza Globals.MESSAGES_KEY ("org.apache.struts.action.MESSAGE").

PropertyMessageResources p = (PropertyMessageResources) request.getAttribute(Globals.MESSAGES_KEY); 
String messageValue = null; 
if (p != null) { 
    // Value for key errors.notempty 
    messageValue = p.getMessage("errors.notempty")); 
} 
+0

Dziękuję za pomoc, ale nie mogę jej uruchomić. request.getAttribute (Globals.MESSAGES_KEY); zwraca null. Zapomniałem powiedzieć więcej informacji na ten temat. Robię wykorzystanie poprzeczne bibliotecznych 1.3.10 i aplet jest zdefiniowana w web.xml, jak widać poniżej: \t \t< \t display-name> \t \t PvsInterface \t PvsInterface com.ford.ads.rapid.pvsw.pvs.PvsInterface \t < uruchamianie przy starcie> 1 Czy brakuje mi czegoś innego? Z góry dziękuję –

+0

Jak skonfigurować zasoby wiadomości? Czy twój plik struts-config.xml zawiera coś takiego: A jeśli tak, czy twój plik właściwości wiadomości-wiadomości znajduje się w ścieżce klas? –

+0

Dzięki za odpowiedź. Tak, mam skonfigurowane zasoby wiadomości w pliku struts-config.xml. A pliki zasobów są tam, gdzie jest kod, w pakiecie zwanym zasobami. –

0

Można też zrobić coś takiego:

ActionContext.getContext().getActionInvocation().getAction() //the action context is threadlocal 

Po wykonaniu akcji można użyć interfejsu TextProvider, aby uzyskać wszelkie zasoby potrzebne do wykonania tego działania.

Powiązane problemy