<c:if test="${not empty flashMessage and not empty flashMessage.text}"><div class="alert alert-${flashMessage.type} alert-dismissible" role="alert"><button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true"><![CDATA[×]]></span></button><p>${flashMessage.text}</p></div></c:if>
It is easy to understand the code snippets.
AlertMessage is a RedirectScoped bean, which means it is can be access in current request and the next request. It is named with CDI @Named which indicates it can be accessed in view via EL by name flashMessage.
MVC Event
MVC defined a series of CDI compatible events, with which you can track the MVC request lifecycle.
MVC provides a MvcEvent interface as the base of all events in MVC, there are several specific event implementations.
AfterControllerEvent
AfterProcessViewEvent
BeforeControllerEvent
BeforeProcessViewEvent
ControllerRedirectEvent
MVC itself will fire these events in the request processing progress, you can observe the events via CDI @Observes.