}
// If id is user specified, we must render
boolean mustRender = shouldWriteIdAttribute(component);
UIMessages messages = (UIMessages) component;
ResponseWriter writer = context.getResponseWriter();
assert(writer != null);
String clientId = ((UIMessages) component).getFor();
// if no clientId was included
if (clientId == null) {
// and the author explicitly only wants global messages
if (messages.isGlobalOnly()) {
// make it so only global messages get displayed.
clientId = "";
}
}
//"for" attribute optional for Messages
Iterator messageIter = getMessageIter(context, clientId, component);
assert(messageIter != null);
if (!messageIter.hasNext()) {
if (mustRender) {
// no message to render, but must render anyway
// but if we're writing the dev stage messages,
// only write it if messages exist
if ("javax_faces_developmentstage_messages".equals(component.getId())) {
return;
}
writer.startElement("div", component);
writeIdAttributeIfNecessary(context, writer, component);
writer.endElement("div");
} // otherwise, return without rendering
return;
}
String layout = (String) component.getAttributes().get("layout");
boolean showSummary = messages.isShowSummary();
boolean showDetail = messages.isShowDetail();
String styleClass = (String) component.getAttributes().get(
"styleClass");
boolean wroteTable = false;
//For layout attribute of "table" render as HTML table.
//If layout attribute is not present, or layout attribute
//is "list", render as HTML list.
if ((layout != null) && (layout.equals("table"))) {
writer.startElement("table", component);
wroteTable = true;
} else {
writer.startElement("ul", component);
}
//Render "table" or "ul" level attributes.
writeIdAttributeIfNecessary(context, writer, component);
if (null != styleClass) {
writer.writeAttribute("class", styleClass, "styleClass");
}
// style is rendered as a passthru attribute
RenderKitUtils.renderPassThruAttributes(context,
writer,
component,
ATTRIBUTES);
while (messageIter.hasNext()) {
FacesMessage curMessage = (FacesMessage) messageIter.next();
if (curMessage.isRendered() && !messages.isRedisplay()) {
continue;
}
curMessage.rendered();
String severityStyle = null;