Esta clase, que para mayor utilidad será final y se accederá a sus métodos de forma estática. Tendrá dos atributos. Uno es el objeto Locale que permitirá la realización de mensajes para los diferentes idiomas, y otro es el objeto Bundle que contienen la información del fichero con los mensajes a mostrar. Podemos tener un objeto Bundle diferente por cada fichero de propiedades que tengamos, por ejemplo si queremos uno para los mensajes de error y otro para los de información.
/** Fichero con los mensajes de la aplicacion */ private static final ResourceBundle BUNDLE; /** Indicador del lenguaje a usar */ private static final Locale LOCALE;Estas variables las iniciamos de forma estática de la siguiente forma:
static {
final FacesContext context = FacesContext.getCurrentInstance();
LOCALE = context.getViewRoot().getLocale();
BUNDLE = context.getApplication().getResourceBundle(context, "msgApp");
}
Dentro de la clase creamos un método estático, que nos devuelva el mensaje formateado (en caso de que le pasemos parámetros ) para mostrar por pantalla.
public static String getMessage(final String key, final Object... args) {
String retorno = null;
if (args == null || args.length == 0) {
retorno = BUNDLE.getString(key);
}else{
MessageFormat fmt = new MessageFormat(BUNDLE.getString(key));
fmt.setLocale(LOCALE);
retorno = fmt.format(args).toString();
}
return retorno;
}
Ahora mostramos como sería una llamada a este método:
MessagesFactory.getMessage("field.requiered", "name");
No hay comentarios:
Publicar un comentario