/** * Encode the case when the <code>var</code> attribute is specified. This will render without any * HTML markup and put the current message in the request scope as identified by the <code>var * </code> attribute. Note: the iteration is by design completely stateless. * * @param context The involved faces context. * @param component The messages component. * @param messages The queued faces messages. * @throws IOException When an I/O error occurs. */ protected void encodeMessagesRepeater( FacesContext context, OmniMessages component, List<FacesMessage> messages) throws IOException { String var = component.getVar(); Map<String, Object> requestMap = context.getExternalContext().getRequestMap(); Object originalVar = requestMap.get(var); try { for (FacesMessage message : messages) { if (message.isRendered() && !component.isRedisplay()) { continue; } requestMap.put(var, message); for (UIComponent child : component.getChildren()) { child.encodeAll(context); } message.rendered(); } } finally { if (originalVar != null) { requestMap.put(var, originalVar); } else { requestMap.remove(var); } } }
private BridgeMessage convertToBridgeMsg(FacesMessage message) { BridgeMessage bridgeMsg = new BridgeMessage(); bridgeMsg.detail = message.getDetail(); bridgeMsg.summary = message.getSummary(); bridgeMsg.rendered = message.isRendered(); bridgeMsg.severityOrdinal = message.getSeverity().getOrdinal(); return bridgeMsg; }
@Override public void encodeEnd(FacesContext facesContext, UIComponent component) throws IOException { if (!component.isRendered()) { return; } Growl uiGrowl = (Growl) component; ResponseWriter writer = facesContext.getResponseWriter(); String clientId = uiGrowl.getClientId(facesContext); Iterator<FacesMessage> allMessages = uiGrowl.isGlobalOnly() ? facesContext.getMessages(null) : facesContext.getMessages(); Map<String, List<FacesMessage>> messages = new HashMap<String, List<FacesMessage>>(); messages.put("info", new ArrayList<FacesMessage>()); // Bootstrap info messages.put("warn", new ArrayList<FacesMessage>()); // Bootstrap warning messages.put("error", new ArrayList<FacesMessage>()); // Bootstrap Error messages.put("fatal", new ArrayList<FacesMessage>()); // Bootstrap Success while (allMessages.hasNext()) { FacesMessage message = allMessages.next(); Severity severity = message.getSeverity(); if (message.isRendered() && !uiGrowl.isRedisplay()) { continue; } if (severity.equals(FacesMessage.SEVERITY_INFO)) messages.get("info").add(message); else if (severity.equals(FacesMessage.SEVERITY_WARN)) messages.get("warn").add(message); else if (severity.equals(FacesMessage.SEVERITY_ERROR)) messages.get("error").add(message); else if (severity.equals(FacesMessage.SEVERITY_FATAL)) messages.get("fatal").add(message); } writer.startElement("script", uiGrowl); writer.writeAttribute("id", clientId, "id"); writer.writeText("$(function() { ", null); for (String severity : messages.keySet()) { List<FacesMessage> severityMessages = messages.get(severity); if (severityMessages.size() > 0) { encodeSeverityMessages(facesContext, uiGrowl, severity, severityMessages); } } writer.writeText("});", null); writer.endElement("script"); }
/** * Encode the case when the faces messages are to be rendered as either a HTML table or a HTML * list. * * @param context The involved faces context. * @param component The messages component. * @param messages The queued faces messages. * @param table Whether to render the messages as a HTML table or a HTML list. * @throws IOException When an I/O error occurs. */ protected void encodeMessages( FacesContext context, OmniMessages component, List<FacesMessage> messages, boolean table) throws IOException { ResponseWriter writer = context.getResponseWriter(); writer.startElement(table ? "table" : "ul", component); writeAttribute(writer, "id", component.getClientId(context)); writeAttribute(writer, component, "styleClass", "class"); writeAttributes(writer, component, "style", "title", "lang", "dir"); boolean showSummary = component.isShowSummary(); boolean showDetail = component.isShowDetail(); boolean escape = component.isEscape(); boolean tooltip = component.isTooltip() && isEmpty(component.getTitle()); for (FacesMessage message : messages) { if (!message.isRendered() || component.isRedisplay()) { encodeMessage(context, component, message, table, showSummary, showDetail, escape, tooltip); message.rendered(); } } writer.endElement(table ? "table" : "ul"); }
@Override public void encodeEnd(FacesContext context, UIComponent component) throws IOException { rendererParamsNotNull(context, component); if (!shouldEncode(component)) return; boolean mustRender = shouldWriteIdAttribute(component); UIMessages messages = (UIMessages) component; ResponseWriter writer = context.getResponseWriter(); assert (writer != null); String clientId = ((UIMessages) component).getFor(); if (clientId == null) if (messages.isGlobalOnly()) clientId = ""; Iterator messageIter = getMessageIter(context, clientId, component); assert (messageIter != null); if (!messageIter.hasNext()) { if (mustRender) { if ("javax_faces_developmentstage_messages".equals(component.getId())) { return; } writer.startElement("div", component); writeIdAttributeIfNecessary(context, writer, component); writer.endElement("div"); } return; } writeIdAttributeIfNecessary(context, writer, component); // style is rendered as a passthru attribute RenderKitUtils.renderPassThruAttributes(context, writer, component, ATTRIBUTES); Map<Severity, List<FacesMessage>> msgs = new HashMap<Severity, List<FacesMessage>>(); msgs.put(FacesMessage.SEVERITY_INFO, new ArrayList<FacesMessage>()); // Bootstrap info msgs.put(FacesMessage.SEVERITY_WARN, new ArrayList<FacesMessage>()); // Bootstrap warning msgs.put(FacesMessage.SEVERITY_ERROR, new ArrayList<FacesMessage>()); // Bootstrap error msgs.put(FacesMessage.SEVERITY_FATAL, new ArrayList<FacesMessage>()); // Bootstrap error while (messageIter.hasNext()) { FacesMessage curMessage = (FacesMessage) messageIter.next(); if (curMessage.isRendered() && !messages.isRedisplay()) { continue; } msgs.get(curMessage.getSeverity()).add(curMessage); } List<FacesMessage> severityMessages = msgs.get(FacesMessage.SEVERITY_FATAL); if (severityMessages.size() > 0) { encodeLoadingInfo( context, component, messages, FacesMessage.SEVERITY_FATAL, severityMessages); } severityMessages = msgs.get(FacesMessage.SEVERITY_ERROR); if (severityMessages.size() > 0) { encodeLoadingInfo( context, component, messages, FacesMessage.SEVERITY_ERROR, severityMessages); } severityMessages = msgs.get(FacesMessage.SEVERITY_WARN); if (severityMessages.size() > 0) { encodeLoadingInfo(context, component, messages, FacesMessage.SEVERITY_WARN, severityMessages); } severityMessages = msgs.get(FacesMessage.SEVERITY_INFO); if (severityMessages.size() > 0) { encodeLoadingInfo(context, component, messages, FacesMessage.SEVERITY_INFO, severityMessages); } }