2009-10-20 14 views
5

Ich entwickle ein Projekt mit Struts und ich frage mich, ob es möglich ist, das Nachrichtenressourcenobjekt in einem Servlet zu erhalten, das im selben Projekt enthalten ist.Wie kann ich das Nachrichtenressourcenobjekt in einem Servlet erhalten?

Es gibt keine Möglichkeit, dieses Objekt mit der Methode getResources(HTTPServletRequest) zu erhalten, da das Servlet keine Action-Klasse erweitert. Gibt es einen Weg, es zu tun?

Vielen Dank im Voraus.

Antwort

6

Nun, endlich habe ich gefunden, wie es geht. Wenn jemand in demselben Problem steckenbleibt, ist hier die Lösung: Verwenden Sie die Klasse java.util.ResourceBundle in Ihrem Servlet.

Sie müssen nur die Resource entlang dem Namen der Eigenschaften Klasse vorbei erstellen und das Gebietsschema Sie verwenden möchten, wie Sie unten sehen können:

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

ResourceBundle ist abstrakt (zumindest in Java 6). Sie müssen ResourceBundle.getBundle ("com.foo.package.theClass", myLocale) aufrufen, anstatt die Klasse zu instanziieren. –

+0

Sie haben absolut Recht, Jeremy. Es muss auf diese Weise gemacht werden, danke, dass du darauf hingewiesen hast !! –

+0

Es gibt keine Methode 'getMessage()' in der Klasse 'java.util.ResourceBundle', aber 'getString()' gibt es. Vielen Dank für guten Rat, es funktioniert wirklich. –

-1

MessageResources-Objekt wird im Anforderungsbereich mit dem Schlüssel Globals.MESSAGES_KEY ("org.apache.struts.action.MESSAGE") gespeichert.

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

Danke für Ihre Hilfe, aber ich kann es nicht funktionieren. request.getAttribute (Globals.MESSAGES_KEY); gibt null zurück. Ich habe vergessen, ein paar mehr Informationen darüber zu sagen. Ich mache Nutzung der Bibliothek Struts 1.3.10 und das Servlet in web.xml definiert, wie Sie unten sehen können: \t \t \t \t \t PvsInterface \t PvsInterface com.ford.ads.rapid.pvsw.pvs.PvsInterface \t < Laden bei Start> 1 Fehle ich noch etwas anderes? Vielen Dank im Voraus –

+0

Wie konfigurieren Sie Ihre Nachrichtenressourcen? Enthält Ihre Datei struts-config.xml etwa Folgendes: Und wenn Sie das tun, befindet sich die Eigenschaftendatei für Nachrichtenressourcen in Ihrem Klassenpfad? –

+0

Danke für die Antwort. Ja, ich habe die Nachrichtenressourcen in der Datei struts-config.xml konfiguriert. Und in den Ressourcendateien befindet sich der Code in einem Paket namens resources. –

0

Sie können auch etwas tun:

Sobald Sie die Aktion haben, können Sie die TextProvider-Schnittstelle verwenden, um die für diese Aktion erforderliche Ressource abzurufen.

Verwandte Themen