package org.jboss.seam.wicket.international; import java.util.List; import org.apache.wicket.Component; import org.apache.wicket.Page; import org.apache.wicket.application.IComponentOnBeforeRenderListener; import org.jboss.seam.international.StatusMessage; public class SeamStatusMessagesListener implements IComponentOnBeforeRenderListener { public void onBeforeRender(Component component) { WicketStatusMessages wicketStatusMessages = WicketStatusMessages.instance(); wicketStatusMessages.onBeforeRender(); if (component instanceof Page) { // If the component is the page, then we also add global messages List<StatusMessage> statusMessages = wicketStatusMessages.getGlobalMessages(); if (statusMessages != null) { for (StatusMessage statusMessage: statusMessages) { addFeedbackMessage(statusMessage, component); } } wicketStatusMessages.clearGlobalMessages(); } List<StatusMessage> statusMessages = wicketStatusMessages.getKeyedMessages(component.getId()); if (statusMessages != null) { for (StatusMessage statusMessage: statusMessages) { addFeedbackMessage(statusMessage, component); } wicketStatusMessages.clearKeyedMessages(component.getId()); } } private void addFeedbackMessage(StatusMessage statusMessage, Component component) { switch (statusMessage.getSeverity()) { case ERROR: component.error(statusMessage.getSummary()); break; case FATAL: component.fatal(statusMessage.getSummary()); break; case INFO: component.info(statusMessage.getSummary()); break; case WARN: component.warn(statusMessage.getSummary()); break; } } }