2012-04-23 6 views
5

Struts2 Aktionen erweitern normalerweise ActionSupport Klasse, die von TextProvider Schnittstelle implementiert und bietet Zugriff auf Ressourcenbündel Dateien in einer bequemen Weise mit getText() Methode.Verwenden von Ressourcen Bundle in Struts2 Interzeptoren

Ich möchte Ressourcenbündel in Interzeptoren verwenden. Ich denke, ich muss die TextProvider Implementierung kopieren und in meinen Interceptor einfügen.

Ich habe bereits global Regress Datei in struts.xml

<constant name="struts.custom.i18n.resources" value="resources.global" /> 

und Ort global.properties in resources Paket definiert.

Es funktioniert gut in Aktionsklassen

Gibt es einen einfacheren Weg, Ressourcenbündel in Abfangjäger zu benutzen?

+0

und warum Sie das Interceptor tun wollen, sind nicht zum Handeln bestimmten, und sie sind nicht Thread-sicher. Ich sehe keinen Grund, dies zu tun. –

+0

@UmeshAwasthi Interceptor sind nicht threadsicher. Ich war mir dessen nicht bewusst. Das ist wirklich alarmierend. Danke –

+1

@Umesh Awasthi Was, wenn Sie eine i18n Fehlermeldung zum Benutzer zeigen möchten, und diese Mitteilung sollte sein, wenn der Abfrageinteractor sieht, dass Sie nicht mehr eingeloggt sind? – user1884155

Antwort

4

Sie können die Klasse java.util.ResourceBundle verwenden.

ResourceBundle bundle = ResourceBundle.getBundle("my_resource_name", locale); 
bundle.getString("resource_key"); 
+0

Ich habe eine ähnliche Anforderung.Ich bin auf der Suche nach einer Möglichkeit, die ich ein Array von Argumenten übergeben kann, die im Nachrichtentext ersetzt werden können.Etwas ähnlich wie Methoden der 'DefaultTextProvider' Klasse von Struts (xwork) Framework. – shabeena

4

Wenn Ihr Aktionstyp von ActionSupport ist, können Sie tun, wie:

ActionSupport actionSupport = (ActionSupport)invocation.getAction(); 
actionSupport.getText("sample.key"); 
+1

Das ist es. Dann ist es von einem POJO: "ActionSupport actionSupport = (ActionSupport) ActionContext.getContext(). GetActionInvocation(). GetAction();' –