Search code examples
jsfhttp-redirectmessage

How to show faces message in the redirected page


I have provided an interface that allows users to create accounts for an application. At the end of the process the registration method performs the registration process adds a success message to the page and then navigates the user to a central data table that displays all the system users.

The problem I have is that the success message never gets displayed because of the page redirect. I can't have a wait() in the method because the JSF message won't get displayed until the method has completed. Ideally I want the success message to be displayed and then a specified time later the page is redirected.

How can I achieve this?


Solution

  • Keep the message in the flash scope. It'll survive the redirect.

    context.addMessage(clientId, message);
    externalContext.getFlash().setKeepMessages(true);
    return "users.xhtml?faces-redirect=true";
    

    Note that older Mojarra versions have some peculiar Flash scope related bugs:

    You'd best to upgrade to a minimum of Mojarra 2.1.27 / 2.2.5 in order to ensure that your application is not affected by this.