2009-10-20 4 views
5

Sto sviluppando un progetto con Struts e mi chiedevo se è possibile ottenere l'oggetto delle risorse del messaggio in un servlet, che è incluso nello stesso progetto.Come posso ottenere l'oggetto delle risorse del messaggio in un servlet?

Non è possibile ottenere quell'oggetto con il metodo getResources(HTTPServletRequest) poiché il servlet non estende una classe Action. C'è un modo per farlo?

Grazie in anticipo.

risposta

6

Bene, ho finalmente trovato come farlo. Solo se qualcuno rimane bloccato nello stesso problema, ecco la soluzione: usa la classe java.util.ResourceBundle nel tuo servlet.

Non vi resta che creare il ResourceBundle passando lungo il nome della classe proprietà e la località che si desidera utilizzare, come potete vedere qui sotto:

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

ResourceBundle è astratto (almeno in Java 6). È necessario chiamare ResourceBundle.getBundle ("com.foo.package.theClass", myLocale) invece di creare un'istanza della classe. –

+0

Hai perfettamente ragione, Jeremy. Deve essere fatto in questo modo, grazie per averlo fatto notare !! –

+0

Non esiste alcun metodo 'getMessage()' nella classe 'java.util.ResourceBundle', ma' getString() 'c'è. Grazie mille per il buon consiglio, funziona davvero. –

-1

MessageResources-object è memorizzato nell'ambito della richiesta con la chiave 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

Grazie per il vostro aiuto ma non riesco a farlo funzionare. request.getAttribute (Globals.MESSAGES_KEY); restituisce null. Ho dimenticato di dire qualche informazione in più. Sto facendo uso dei Struts biblioteca 1.3.10 e il servlet è definito nel web.xml, come potete vedere qui sotto: \t \t \t \t \t PvsInterface \t PvsInterface com.ford.ads.rapid.pvsw.pvs.PvsInterface \t < caricamento all'avvio> 1 Mi manca qualcos'altro? Grazie in anticipo –

+0

come configurare le risorse del messaggio? Il tuo struts-config.xml contiene qualcosa del tipo: E se lo fai, il tuo file delle proprietà delle risorse dei messaggi nel classpath? –

+0

Grazie per aver risposto. Sì, ho configurato le risorse del messaggio nel file struts-config.xml. E i file delle risorse sono dove si trova il codice, in un pacchetto chiamato risorse. –

0

Si può anche fare qualcosa di simile:

Una volta eseguita l'azione, è possibile utilizzare l'interfaccia TextProvider per ottenere qualsiasi risorsa necessaria per tale azione.

Problemi correlati