2012-04-23 11 views
5

Struts2 Le azioni normalmente estendono la classe ActionSupport che implementa l'interfaccia TextProvider e fornisce l'accesso ai file del bundle di risorse in un modo conveniente utilizzando il metodo getText().Utilizzo del bundle di risorse negli intercettori Struts2

Desidero utilizzare il pacchetto di risorse in Interceptor. Suppongo di dover copiare l'implementazione TextProvider e incollarla nel mio intercettore.

ho già definito file di ricorrere globale nella struts.xml

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

E mettere in global.propertiesresources pacchetto.

Funziona bene nelle classi di azione

Esiste un modo più facile da usare bundle di risorse in intercettori?

+0

e perché si vuole fare che Interceptor non sono per un'azione specifica e non è thread-safe?. non vedo alcuna ragione per farlo. –

+0

@UmeshAwasthi Interceptor non sono thread-safe. Non ne ero consapevole. Questo è davvero allarmante. Grazie –

+1

@Umesh Awasthi Che cosa succede se si desidera mostrare un messaggio di errore i18n all'utente, e tale messaggio dovrebbe essere quando l'intercettore di accesso rileva che non si è più effettuato l'accesso? – user1884155

risposta

4

È possibile utilizzare la classe java.util.ResourceBundle.

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

Ho un requisito simile. Sto cercando un modo per passare una serie di argomenti che possono essere sostituiti nel testo del messaggio. Un po 'simile ai metodi della classe 'DefaultTextProvider' del framework Struts (xwork). – shabeena

4

Se l'azione è di tipo di ActionSupport si può fare come:

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

Questo è tutto. Quindi, da un POJO è: 'ActionSupport actionSupport = (ActionSupport) ActionContext.getContext(). GetActionInvocation(). GetAction();' –

Problemi correlati