Acceder al ResourceBundle a partir de una action Struts

2153 vistas

El conjunto de mensajes se almacenan en un objeto MessageResources disponible en el scope request. Una vez recuperado este objeto, accedemos a un mensaje particular con el método getMessage() con parámetro la localización y la llave del mensaje a recuperar.

Ejemplo:



java
  1.    
  2. /**
  3.  * Return the message resources for localization
  4.  */
  5. private static MessageResources getMessageResources(HttpServletRequest request) {
  6.     return (MessageResources) request.getAttribute(Globals.MESSAGES_KEY);
  7. }
  8.  
  9. /**
  10.  * Get the localized message
  11.  */
  12. public static String getLocalizedMessage(HttpServletRequest request, String messageKey) {
  13.     MessageResources messageResources = getMessageResources(request);
  14.     String localizedMessage = null;
  15.     if(messageResources != null) {
  16.         localizedMessage = messageResources.getMessage(request.getLocale(), messageKey);
  17.     }
  18.     if(localizedMessage == null) {
  19.         localizedMessage = "N/A";
  20.     }
  21.     return localizedMessage;
  22. }



De esta manera, imaginemos que dentro del fichero de localozación, tenemos un mensaje del estilo:



java
  1. prompt.hello=Hola



Entonces, en el action struts, para recuperar el mensaje, tendrÃamos que hacer:



java
  1. String msg = I18NHelper.getLocalizedMessage(request, "prompt.hello");