Class Messages

java.lang.Object
org.omnifaces.util.Messages

public final class Messages extends Object

Collection of utility methods for the Faces API with respect to working with FacesMessage.

Usage

Here are some examples:

 // In a validator.
 Messages.throwValidatorException("Invalid input.");
 
 // In a converter.
 throw Messages.asConverterException("Unknown input.");
 
 // In a validator, as extra message on another component.
 Messages.addError("someFormId:someInputId", "This is also invalid.");
 
 // In a managed bean action method.
 Messages.addGlobalError("Unknown login, please try again.");
 
 // In a managed bean action method which uses Post-Redirect-Get.
 Messages.addFlashGlobalInfo("New item with id {0} is successfully added.", item.getId());
 return "items?faces-redirect=true";
 

There is also a builder which also allows you to set the message detail. Some examples:

 // In a validator.
 Messages.create("Invalid input.").detail("Value {0} is not expected.", value).throwValidatorException();
 
 // In a validator, as extra message on another component.
 Messages.create("This is also invalid.").error().add("someFormId:someInputId");
 
 // In a managed bean action method.
 Messages.create("Unknown login, please try again.").error().add();
 
 // In a managed bean action method which uses Post-Redirect-Get.
 Messages.create("New item with id {0} is successfully added.", item.getId()).flash().add();
 return "items?faces-redirect=true";
 

For a full list, check the method summary.

Message resolver

It also offers the possibility to set a custom message resolver so that you can control the way how messages are been resolved. You can for example supply an implementation wherein the message is been treated as for example a resource bundle key. Here's an example:

 Messages.setResolver(new Messages.Resolver() {
     private static final String BASE_NAME = "com.example.i18n.messages";
     public String getMessage(String message, Object... params) {
         ResourceBundle bundle = ResourceBundle.getBundle(BASE_NAME, Faces.getLocale());
         if (bundle.containsKey(message)) {
             message = bundle.getString(message);
         }
         return params.length > 0 ? MessageFormat.format(message, params) : message;
     }
 });
 

There is already a default resolver which just delegates the message and the parameters straight to MessageFormat.format(String, Object...). Note that the resolver can be set only once. It's recommend to do it early during webapp's startup, for example with a ServletContextListener as WebListener, or a ServletContainerInitializer in custom JAR, or a ApplicationScoped bean, or an eagerly initialized Startup bean.

Design notice

Note that all of those shortcut methods by design only sets the message summary and ignores the message detail (it is not possible to offer varargs to parameterize both the summary and the detail). The message summary is exactly the information which is by default displayed in the <h:message(s)>, while the detail is by default only displayed when you explicitly set the showDetail="true" attribute.

To create a FacesMessage with a message detail as well, use the Messages.Message builder as you can obtain by create(String, Object...).

MessagesLocal

Note that there's normally a minor overhead in obtaining the thread local FacesContext. In case client code needs to call methods in this class multiple times it's expected that performance will be slightly better if instead the FacesContext is obtained once and the required methods are called on that, although the difference is practically negligible when used in modern server hardware.

In such case, consider using MessagesLocal instead. The difference with Messages is that no one method of MessagesLocal obtains the FacesContext from the current thread by FacesContext.getCurrentInstance(). This job is up to the caller.

Author:
Bauke Scholtz
See Also:
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static final class 
    Faces message builder.
    static interface 
    The message resolver allows the developers to change the way how messages are resolved.
  • Method Summary

    Modifier and Type
    Method
    Description
    static void
    add(FacesMessage.Severity severity, String clientId, String message, Object... params)
    Add a faces message of the given severity to the given client ID, with the given message body which is formatted with the given parameters.
    static void
    add(String clientId, FacesMessage message)
    Add the given faces message to the given client ID.
    static void
    addError(String clientId, String message, Object... params)
    Add an ERROR faces message to the given client ID, with the given message body which is formatted with the given parameters.
    static void
    addFatal(String clientId, String message, Object... params)
    Add a FATAL faces message to the given client ID, with the given message body which is formatted with the given parameters.
    static void
    addFlash(FacesMessage.Severity severity, String clientId, String message, Object... params)
    Add a flash scoped faces message of the given severity to the given client ID, with the given message body which is formatted with the given parameters.
    static void
    addFlash(String clientId, FacesMessage message)
    Add a flash scoped faces message to the given client ID.
    static void
    addFlashError(String clientId, String message, Object... params)
    Add a flash scoped ERROR faces message to the given client ID, with the given message body which is formatted with the given parameters.
    static void
    addFlashFatal(String clientId, String message, Object... params)
    Add a flash scoped FATAL faces message to the given client ID, with the given message body which is formatted with the given parameters.
    static void
    Add a flash scoped global faces message.
    static void
    addFlashGlobalError(String message, Object... params)
    Add a flash scoped global ERROR faces message, with the given message body which is formatted with the given parameters.
    static void
    addFlashGlobalFatal(String message, Object... params)
    Add a flash scoped global FATAL faces message, with the given message body which is formatted with the given parameters.
    static void
    addFlashGlobalInfo(String message, Object... params)
    Add a flash scoped global INFO faces message, with the given message body which is formatted with the given parameters.
    static void
    addFlashGlobalWarn(String message, Object... params)
    Add a flash scoped global WARN faces message, with the given message body which is formatted with the given parameters.
    static void
    addFlashInfo(String clientId, String message, Object... params)
    Add a flash scoped INFO faces message to the given client ID, with the given message body which is formatted with the given parameters.
    static void
    addFlashWarn(String clientId, String message, Object... params)
    Add a flash scoped WARN faces message to the given client ID, with the given message body which is formatted with the given parameters.
    static void
    Add a global faces message.
    static void
    addGlobal(FacesMessage.Severity severity, String message, Object... params)
    Add a global faces message of the given severity, with the given message body which is formatted with the given parameters.
    static void
    addGlobalError(String message, Object... params)
    Add a global ERROR faces message, with the given message body which is formatted with the given parameters.
    static void
    addGlobalFatal(String message, Object... params)
    Add a global FATAL faces message, with the given message body which is formatted with the given parameters.
    static void
    addGlobalInfo(String message, Object... params)
    Add a global INFO faces message, with the given message body which is formatted with the given parameters.
    static void
    addGlobalWarn(String message, Object... params)
    Add a global WARN faces message, with the given message body which is formatted with the given parameters.
    static void
    addInfo(String clientId, String message, Object... params)
    Add an INFO faces message to the given client ID, with the given message body which is formatted with the given parameters.
    static void
    addWarn(String clientId, String message, Object... params)
    Add a WARN faces message to the given client ID, with the given message body which is formatted with the given parameters.
    asConverterException(String message, Object... params)
    Returns a ConverterException with an ERROR faces message with the given message body which is formatted with the given parameters.
    asValidatorException(String message, Object... params)
    Returns a ValidatorException with an ERROR faces message with the given message body which is formatted with the given parameters.
    static boolean
    clear(FacesMessage.Severity severity, String... clientIds)
    Clears faces messages of the given severity associated with the given client IDs.
    static boolean
    clear(String... clientIds)
    Clears faces messages associated with the given client IDs.
    static boolean
    clearError(String... clientIds)
    Clears ERROR faces messages associated with the given client IDs.
    static boolean
    clearFatal(String... clientIds)
    Clears FATAL faces messages associated with the given client IDs.
    static boolean
    Clears global faces messages of all severities.
    static boolean
    Clears global faces messages of given severity.
    static boolean
    Clears global ERROR faces messages.
    static boolean
    Clears global FATAL faces messages.
    static boolean
    Clears global INFO faces messages.
    static boolean
    Clears global WARN faces messages.
    static boolean
    clearInfo(String... clientIds)
    Clears INFO faces messages associated with the given client IDs.
    static boolean
    clearWarn(String... clientIds)
    Clears WARN faces messages associated with the given client IDs.
    create(FacesMessage.Severity severity, String message, Object... params)
    Create a faces message of the given severity with the given message body which is formatted with the given parameters.
    create(String message, Object... params)
    Create a faces message with the default INFO severity and the given message body which is formatted with the given parameters as summary message.
    createError(String message, Object... params)
    Create an ERROR faces message with the given message body which is formatted with the given parameters.
    createFatal(String message, Object... params)
    Create a FATAL faces message with the given message body which is formatted with the given parameters.
    createInfo(String message, Object... params)
    Create an INFO faces message with the given message body which is formatted with the given parameters.
    createWarn(String message, Object... params)
    Create a WARN faces message with the given message body which is formatted with the given parameters.
    static boolean
    Returns true if there are no faces messages, otherwise false.
    static boolean
    isEmpty(String clientId)
    Returns true if there are no faces messages for the given client ID, otherwise false.
    static boolean
    Returns true if there are no global faces messages, otherwise false.
    static void
    Set the custom message resolver.
    static void
    throwConverterException(String message, Object... params)
    Throw a ConverterException with an ERROR faces message with the given message body which is formatted with the given parameters.
    static void
    throwValidatorException(String message, Object... params)
    Throw a ValidatorException with an ERROR faces message with the given message body which is formatted with the given parameters.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Method Details

    • setResolver

      public static void setResolver(Messages.Resolver resolver)
      Set the custom message resolver. It can be set only once. It's recommend to do it early during webapp's startup, for example with a ServletContextListener as WebListener, or a ServletContainerInitializer in custom JAR, or a ApplicationScoped bean, or an eagerly initialized Startup bean.
      Parameters:
      resolver - The custom message resolver.
      Throws:
      IllegalStateException - When the resolver has already been set.
    • create

      public static Messages.Message create(String message, Object... params)
      Create a faces message with the default INFO severity and the given message body which is formatted with the given parameters as summary message. To set the detail message, use Messages.Message.detail(String, Object...). To change the default INFO severity, use Messages.Message.warn(), Messages.Message.error(), or Messages.Message.fatal(). To make it a flash message, use Messages.Message.flash(). To finally add it to the faces context, use either Messages.Message.add(String) to add it for a specific client ID, or Messages.Message.add() to add it as a global message.
      Parameters:
      message - The message body.
      params - The message format parameters, if any.
      Returns:
      The Messages.Message builder.
      Since:
      1.1
      See Also:
    • create

      public static FacesMessage create(FacesMessage.Severity severity, String message, Object... params)
      Create a faces message of the given severity with the given message body which is formatted with the given parameters. Useful when a faces message is needed to construct a ConverterException or a ValidatorException.
      Parameters:
      severity - The severity of the faces message.
      message - The message body.
      params - The message format parameters, if any.
      Returns:
      A new faces message of the given severity with the given message body which is formatted with the given parameters.
      See Also:
    • createInfo

      public static FacesMessage createInfo(String message, Object... params)
      Create an INFO faces message with the given message body which is formatted with the given parameters.
      Parameters:
      message - The message body.
      params - The message format parameters, if any.
      Returns:
      A new INFO faces message with the given message body which is formatted with the given parameters.
      See Also:
    • createWarn

      public static FacesMessage createWarn(String message, Object... params)
      Create a WARN faces message with the given message body which is formatted with the given parameters.
      Parameters:
      message - The message body.
      params - The message format parameters, if any.
      Returns:
      A new WARN faces message with the given message body which is formatted with the given parameters.
      See Also:
    • createError

      public static FacesMessage createError(String message, Object... params)
      Create an ERROR faces message with the given message body which is formatted with the given parameters.
      Parameters:
      message - The message body.
      params - The message format parameters, if any.
      Returns:
      A new ERROR faces message with the given message body which is formatted with the given parameters.
      See Also:
    • createFatal

      public static FacesMessage createFatal(String message, Object... params)
      Create a FATAL faces message with the given message body which is formatted with the given parameters.
      Parameters:
      message - The message body.
      params - The message format parameters, if any.
      Returns:
      A new FATAL faces message with the given message body which is formatted with the given parameters.
      See Also:
    • asConverterException

      public static ConverterException asConverterException(String message, Object... params)
      Returns a ConverterException with an ERROR faces message with the given message body which is formatted with the given parameters.
      Parameters:
      message - The message body.
      params - The message format parameters, if any.
      Returns:
      ConverterException
      Since:
      3.8
      See Also:
    • asValidatorException

      public static ValidatorException asValidatorException(String message, Object... params)
      Returns a ValidatorException with an ERROR faces message with the given message body which is formatted with the given parameters.
      Parameters:
      message - The message body.
      params - The message format parameters, if any.
      Returns:
      ValidatorException
      Since:
      3.8
      See Also:
    • throwConverterException

      public static void throwConverterException(String message, Object... params)
      Throw a ConverterException with an ERROR faces message with the given message body which is formatted with the given parameters.
      Parameters:
      message - The message body.
      params - The message format parameters, if any.
      Throws:
      ConverterException - The so far built message as a ConverterException.
      Since:
      3.5
      See Also:
    • throwValidatorException

      public static void throwValidatorException(String message, Object... params)
      Throw a ValidatorException with an ERROR faces message with the given message body which is formatted with the given parameters.
      Parameters:
      message - The message body.
      params - The message format parameters, if any.
      Throws:
      ValidatorException - The so far built message as a ValidatorException.
      Since:
      3.5
      See Also:
    • add

      public static void add(String clientId, FacesMessage message)
      Add the given faces message to the given client ID. When the client ID is null, it becomes a global faces message. This can be filtered in a <h:messages globalOnly="true">.
      Parameters:
      clientId - The client ID to add the faces message for.
      message - The faces message.
      See Also:
    • add

      public static void add(FacesMessage.Severity severity, String clientId, String message, Object... params)
      Add a faces message of the given severity to the given client ID, with the given message body which is formatted with the given parameters.
      Parameters:
      clientId - The client ID to add the faces message for.
      severity - The severity of the faces message.
      message - The message body.
      params - The message format parameters, if any.
      See Also:
    • addInfo

      public static void addInfo(String clientId, String message, Object... params)
      Add an INFO faces message to the given client ID, with the given message body which is formatted with the given parameters.
      Parameters:
      clientId - The client ID to add the faces message for.
      message - The message body.
      params - The message format parameters, if any.
      See Also:
    • addWarn

      public static void addWarn(String clientId, String message, Object... params)
      Add a WARN faces message to the given client ID, with the given message body which is formatted with the given parameters.
      Parameters:
      clientId - The client ID to add the faces message for.
      message - The message body.
      params - The message format parameters, if any.
      See Also:
    • addError

      public static void addError(String clientId, String message, Object... params)
      Add an ERROR faces message to the given client ID, with the given message body which is formatted with the given parameters.
      Parameters:
      clientId - The client ID to add the faces message for.
      message - The message body.
      params - The message format parameters, if any.
      See Also:
    • addFatal

      public static void addFatal(String clientId, String message, Object... params)
      Add a FATAL faces message to the given client ID, with the given message body which is formatted with the given parameters.
      Parameters:
      clientId - The client ID to add the faces message for.
      message - The message body.
      params - The message format parameters, if any.
      See Also:
    • addGlobal

      public static void addGlobal(FacesMessage message)
      Add a global faces message. This adds a faces message to a client ID of null.
      Parameters:
      message - The global faces message.
      See Also:
    • addGlobal

      public static void addGlobal(FacesMessage.Severity severity, String message, Object... params)
      Add a global faces message of the given severity, with the given message body which is formatted with the given parameters.
      Parameters:
      severity - The severity of the global faces message.
      message - The message body.
      params - The message format parameters, if any.
      See Also:
    • addGlobalInfo

      public static void addGlobalInfo(String message, Object... params)
      Add a global INFO faces message, with the given message body which is formatted with the given parameters.
      Parameters:
      message - The message body.
      params - The message format parameters, if any.
      See Also:
    • addGlobalWarn

      public static void addGlobalWarn(String message, Object... params)
      Add a global WARN faces message, with the given message body which is formatted with the given parameters.
      Parameters:
      message - The message body.
      params - The message format parameters, if any.
      See Also:
    • addGlobalError

      public static void addGlobalError(String message, Object... params)
      Add a global ERROR faces message, with the given message body which is formatted with the given parameters.
      Parameters:
      message - The message body.
      params - The message format parameters, if any.
      See Also:
    • addGlobalFatal

      public static void addGlobalFatal(String message, Object... params)
      Add a global FATAL faces message, with the given message body which is formatted with the given parameters.
      Parameters:
      message - The message body.
      params - The message format parameters, if any.
      See Also:
    • addFlash

      public static void addFlash(String clientId, FacesMessage message)
      Add a flash scoped faces message to the given client ID. Use this when you need to display the message after a redirect.

      NOTE: the flash scope has in early Mojarra versions however some pretty peculiar problems. In older versions, the messages are remembered too long, or they are only displayed after refresh, or they are not displayed when the next request is on a different path. Only since Mojarra 2.1.14, all known flash scope problems are solved.

      Parameters:
      clientId - The client ID to add the flash scoped faces message for.
      message - The faces message.
      See Also:
    • addFlash

      public static void addFlash(FacesMessage.Severity severity, String clientId, String message, Object... params)
      Add a flash scoped faces message of the given severity to the given client ID, with the given message body which is formatted with the given parameters. Use this when you need to display the message after a redirect.
      Parameters:
      clientId - The client ID to add the faces message for.
      severity - The severity of the faces message.
      message - The message body.
      params - The message format parameters, if any.
      See Also:
    • addFlashInfo

      public static void addFlashInfo(String clientId, String message, Object... params)
      Add a flash scoped INFO faces message to the given client ID, with the given message body which is formatted with the given parameters. Use this when you need to display the message after a redirect.
      Parameters:
      clientId - The client ID to add the faces message for.
      message - The message body.
      params - The message format parameters, if any.
      See Also:
    • addFlashWarn

      public static void addFlashWarn(String clientId, String message, Object... params)
      Add a flash scoped WARN faces message to the given client ID, with the given message body which is formatted with the given parameters. Use this when you need to display the message after a redirect.
      Parameters:
      clientId - The client ID to add the faces message for.
      message - The message body.
      params - The message format parameters, if any.
      See Also:
    • addFlashError

      public static void addFlashError(String clientId, String message, Object... params)
      Add a flash scoped ERROR faces message to the given client ID, with the given message body which is formatted with the given parameters. Use this when you need to display the message after a redirect.
      Parameters:
      clientId - The client ID to add the faces message for.
      message - The message body.
      params - The message format parameters, if any.
      See Also:
    • addFlashFatal

      public static void addFlashFatal(String clientId, String message, Object... params)
      Add a flash scoped FATAL faces message to the given client ID, with the given message body which is formatted with the given parameters. Use this when you need to display the message after a redirect.
      Parameters:
      clientId - The client ID to add the faces message for.
      message - The message body.
      params - The message format parameters, if any.
      See Also:
    • addFlashGlobal

      public static void addFlashGlobal(FacesMessage message)
      Add a flash scoped global faces message. This adds a faces message to a client ID of null. Use this when you need to display the message after a redirect.
      Parameters:
      message - The global faces message.
      See Also:
    • addFlashGlobalInfo

      public static void addFlashGlobalInfo(String message, Object... params)
      Add a flash scoped global INFO faces message, with the given message body which is formatted with the given parameters. Use this when you need to display the message after a redirect.
      Parameters:
      message - The message body.
      params - The message format parameters, if any.
      See Also:
    • addFlashGlobalWarn

      public static void addFlashGlobalWarn(String message, Object... params)
      Add a flash scoped global WARN faces message, with the given message body which is formatted with the given parameters. Use this when you need to display the message after a redirect.
      Parameters:
      message - The message body.
      params - The message format parameters, if any.
      See Also:
    • addFlashGlobalError

      public static void addFlashGlobalError(String message, Object... params)
      Add a flash scoped global ERROR faces message, with the given message body which is formatted with the given parameters. Use this when you need to display the message after a redirect.
      Parameters:
      message - The message body.
      params - The message format parameters, if any.
      See Also:
    • addFlashGlobalFatal

      public static void addFlashGlobalFatal(String message, Object... params)
      Add a flash scoped global FATAL faces message, with the given message body which is formatted with the given parameters. Use this when you need to display the message after a redirect.
      Parameters:
      message - The message body.
      params - The message format parameters, if any.
      See Also:
    • isEmpty

      public static boolean isEmpty()
      Returns true if there are no faces messages, otherwise false.
      Returns:
      true if there are no faces messages, otherwise false.
      Since:
      2.2
      See Also:
    • isEmpty

      public static boolean isEmpty(String clientId)
      Returns true if there are no faces messages for the given client ID, otherwise false.
      Parameters:
      clientId - The client ID to check the messages for.
      Returns:
      true if there are no faces messages for the given client ID, otherwise false.
      Since:
      2.2
      See Also:
    • isGlobalEmpty

      public static boolean isGlobalEmpty()
      Returns true if there are no global faces messages, otherwise false.
      Returns:
      true if there are no global faces messages, otherwise false.
      Since:
      2.2
      See Also:
    • clear

      public static boolean clear(FacesMessage.Severity severity, String... clientIds)
      Clears faces messages of the given severity associated with the given client IDs.
      Parameters:
      severity - The severity to clear faces message for. If this is null, then all severities are matched.
      clientIds - The client IDs to clear faces messages for. If this is null or empty, then all faces messages are cleared. If this contains null, then all global faces messages are cleared.
      Returns:
      true if at least one faces message of the given severity associated with the given client IDs was cleared.
      Since:
      3.5
      See Also:
    • clear

      public static boolean clear(String... clientIds)
      Clears faces messages associated with the given client IDs.
      Parameters:
      clientIds - The client IDs to clear faces messages for. If this is empty, then all faces messages are cleared. If this contains null, then all global faces messages are cleared.
      Returns:
      true if at least one faces message associated with the given client IDs was cleared.
      Since:
      3.5
      See Also:
    • clearInfo

      public static boolean clearInfo(String... clientIds)
      Clears INFO faces messages associated with the given client IDs.
      Parameters:
      clientIds - The client IDs to clear INFO faces messages for. If this is empty, then all INFO faces messages are cleared. If this contains null, then all global INFO faces messages are cleared.
      Returns:
      true if at least one INFO faces message associated with the given client IDs was cleared.
      Since:
      3.5
      See Also:
    • clearWarn

      public static boolean clearWarn(String... clientIds)
      Clears WARN faces messages associated with the given client IDs.
      Parameters:
      clientIds - The client IDs to clear WARN faces messages for. If this is empty, then all WARN faces messages are cleared. If this contains null, then all global WARN faces messages are cleared.
      Returns:
      true if at least one WARN faces message associated with the given client IDs was cleared.
      Since:
      3.5
      See Also:
    • clearError

      public static boolean clearError(String... clientIds)
      Clears ERROR faces messages associated with the given client IDs.
      Parameters:
      clientIds - The client IDs to clear ERROR faces messages for. If this is empty, then all ERROR faces messages are cleared. If this contains null, then all global ERROR faces messages are cleared.
      Returns:
      true if at least one ERROR faces message associated with the given client IDs was cleared.
      Since:
      3.5
      See Also:
    • clearFatal

      public static boolean clearFatal(String... clientIds)
      Clears FATAL faces messages associated with the given client IDs.
      Parameters:
      clientIds - The client IDs to clear FATAL faces messages for. If this is empty, then all FATAL face messages are cleared. If this contains null, then all global FATAL faces messages are cleared.
      Returns:
      true if at least one FATAL faces message associated with the given client IDs was cleared.
      Since:
      3.5
      See Also:
    • clearGlobal

      public static boolean clearGlobal(FacesMessage.Severity severity)
      Clears global faces messages of given severity.
      Parameters:
      severity - The severity of the faces message. If this is null, then all severities are matched.
      Returns:
      true if at least one global faces message of given severity was cleared.
      Since:
      3.5
      See Also:
    • clearGlobal

      public static boolean clearGlobal()
      Clears global faces messages of all severities.
      Returns:
      true if at least one global faces message was cleared.
      Since:
      3.5
      See Also:
    • clearGlobalInfo

      public static boolean clearGlobalInfo()
      Clears global INFO faces messages.
      Returns:
      true if at least one global INFO faces message was cleared.
      Since:
      3.5
      See Also:
    • clearGlobalWarn

      public static boolean clearGlobalWarn()
      Clears global WARN faces messages.
      Returns:
      true if at least one global WARN faces message was cleared.
      Since:
      3.5
      See Also:
    • clearGlobalError

      public static boolean clearGlobalError()
      Clears global ERROR faces messages.
      Returns:
      true if at least one global ERROR faces message was cleared.
      Since:
      3.5
      See Also:
    • clearGlobalFatal

      public static boolean clearGlobalFatal()
      Clears global FATAL faces messages.
      Returns:
      true if at least one global FATAL faces message was cleared.
      Since:
      3.5
      See Also: