htmlmessagesrendererbase.java
来自「一个使用struts+hibernate+spring开发的完的网站源代码。」· Java 代码 · 共 360 行
JAVA
360 行
/* * Copyright 2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package org.apache.myfaces.renderkit.html;import org.apache.myfaces.renderkit.JSFAttr;import org.apache.myfaces.renderkit.RendererUtils;import org.apache.myfaces.util.NullIterator;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import javax.faces.application.FacesMessage;import javax.faces.component.UIComponent;import javax.faces.component.UIMessages;import javax.faces.component.html.HtmlMessages;import javax.faces.context.FacesContext;import javax.faces.context.ResponseWriter;import java.io.IOException;import java.util.Iterator;import java.util.Map;/** * @author Manfred Geiler (latest modification by $Author: mmarinschek $) * @version $Revision: 1.5 $ $Date: 2005/01/26 13:27:16 $ * $Log: HtmlMessagesRendererBase.java,v $ * Revision 1.5 2005/01/26 13:27:16 mmarinschek * The x:message tags are now extended to use the column-name as a label for all inputs in an x:dataTable, without having to specify additional information. * * Revision 1.4 2004/12/23 13:03:09 mmarinschek * id's not rendered (or not conditionally rendered); changes in jslistener to support both ie and firefox now * * Revision 1.3 2004/10/13 11:51:01 matze * renamed packages to org.apache * * Revision 1.2 2004/07/01 22:00:56 mwessendorf * ASF switch * * Revision 1.1 2004/03/30 17:47:36 manolito * Message and Messages refactored * */public abstract class HtmlMessagesRendererBase extends HtmlMessageRendererBase{ private static final Log log = LogFactory.getLog(HtmlMessagesRendererBase.class); protected static final String LAYOUT_LIST = "list"; protected static final String LAYOUT_TABLE = "table"; protected void renderMessages(FacesContext facesContext, UIComponent messages) throws IOException { MessagesIterator messagesIterator = new MessagesIterator(facesContext, isGlobalOnly(messages)); if (messagesIterator.hasNext()) { String layout = getLayout(messages); if (layout == null) { if (log.isDebugEnabled()) { log.debug("No messages layout given, using default layout 'list'."); } renderList(facesContext, messages, messagesIterator); } else if (layout.equalsIgnoreCase(LAYOUT_TABLE)) { renderTable(facesContext, messages, messagesIterator); } else { if (log.isWarnEnabled() && !layout.equalsIgnoreCase(LAYOUT_LIST)) { log.warn("Unsupported messages layout '" + layout + "' - using default layout 'list'."); } renderList(facesContext, messages, messagesIterator); } } } private void renderList(FacesContext facesContext, UIComponent messages, MessagesIterator messagesIterator) throws IOException { ResponseWriter writer = facesContext.getResponseWriter(); writer.startElement(HTML.UL_ELEM, messages); HtmlRendererUtils.writeIdIfNecessary(writer, messages, facesContext); while(messagesIterator.hasNext()) { writer.startElement(HTML.LI_ELEM, messages); renderSingleFacesMessage(facesContext, messages, (FacesMessage)messagesIterator.next(), messagesIterator.getClientId()); writer.endElement(HTML.LI_ELEM); } writer.endElement(HTML.UL_ELEM); } private void renderTable(FacesContext facesContext, UIComponent messages, MessagesIterator messagesIterator) throws IOException { ResponseWriter writer = facesContext.getResponseWriter(); writer.startElement(HTML.TABLE_ELEM, messages); HtmlRendererUtils.writeIdIfNecessary(writer, messages, facesContext); while(messagesIterator.hasNext()) { writer.startElement(HTML.TR_ELEM, messages); writer.startElement(HTML.TD_ELEM, messages); renderSingleFacesMessage(facesContext, messages, (FacesMessage)messagesIterator.next(), messagesIterator.getClientId()); writer.endElement(HTML.TD_ELEM); writer.endElement(HTML.TR_ELEM); } writer.endElement(HTML.TABLE_ELEM); } protected String[] getStyleAndStyleClass(UIComponent messages, FacesMessage.Severity severity) { String style = null; String styleClass = null; if (messages instanceof HtmlMessages) { if (severity == FacesMessage.SEVERITY_INFO) { style = ((HtmlMessages)messages).getInfoStyle(); styleClass = ((HtmlMessages)messages).getInfoClass(); } else if (severity == FacesMessage.SEVERITY_WARN) { style = ((HtmlMessages)messages).getWarnStyle(); styleClass = ((HtmlMessages)messages).getWarnClass(); } else if (severity == FacesMessage.SEVERITY_ERROR) { style = ((HtmlMessages)messages).getErrorStyle(); styleClass = ((HtmlMessages)messages).getErrorClass(); } else if (severity == FacesMessage.SEVERITY_FATAL) { style = ((HtmlMessages)messages).getFatalStyle(); styleClass = ((HtmlMessages)messages).getFatalClass(); } if (style == null) { style = ((HtmlMessages)messages).getStyle(); } if (styleClass == null) { styleClass = ((HtmlMessages)messages).getStyleClass(); } } else { Map attr = messages.getAttributes(); if (severity == FacesMessage.SEVERITY_INFO) { style = (String)attr.get(JSFAttr.INFO_STYLE_ATTR); styleClass = (String)attr.get(JSFAttr.INFO_CLASS_ATTR); } else if (severity == FacesMessage.SEVERITY_WARN) { style = (String)attr.get(JSFAttr.WARN_STYLE_ATTR); styleClass = (String)attr.get(JSFAttr.WARN_CLASS_ATTR); } else if (severity == FacesMessage.SEVERITY_ERROR) { style = (String)attr.get(JSFAttr.ERROR_STYLE_ATTR); styleClass = (String)attr.get(JSFAttr.ERROR_CLASS_ATTR); } else if (severity == FacesMessage.SEVERITY_FATAL) { style = (String)attr.get(JSFAttr.FATAL_STYLE_ATTR); styleClass = (String)attr.get(JSFAttr.FATAL_CLASS_ATTR); } if (style == null) { style = (String)attr.get(JSFAttr.STYLE_CLASS_ATTR); } if (styleClass == null) { styleClass = (String)attr.get(JSFAttr.STYLE_CLASS_ATTR); } } return new String[] {style, styleClass}; } protected String getTitle(UIComponent component) { if (component instanceof HtmlMessages) { return ((HtmlMessages)component).getTitle(); } else { return (String)component.getAttributes().get(JSFAttr.TITLE_ATTR); } } protected boolean isTooltip(UIComponent component) { if (component instanceof HtmlMessages) { return ((HtmlMessages)component).isTooltip(); } else { return RendererUtils.getBooleanAttribute(component, JSFAttr.TOOLTIP_ATTR, false); } } protected boolean isShowSummary(UIComponent component) { if (component instanceof UIMessages) { return ((UIMessages)component).isShowSummary(); } else { return RendererUtils.getBooleanAttribute(component, JSFAttr.SHOW_SUMMARY_ATTR, false); } } protected boolean isShowDetail(UIComponent component) { if (component instanceof UIMessages) { return ((UIMessages)component).isShowDetail(); } else { return RendererUtils.getBooleanAttribute(component, JSFAttr.SHOW_DETAIL_ATTR, false); } } protected boolean isGlobalOnly(UIComponent component) { if (component instanceof UIMessages) { return ((UIMessages)component).isGlobalOnly(); } else { return RendererUtils.getBooleanAttribute(component, JSFAttr.GLOBAL_ONLY_ATTR, false); } } protected String getLayout(UIComponent component) { if (component instanceof HtmlMessages) { return ((HtmlMessages)component).getLayout(); } else { return (String)component.getAttributes().get(JSFAttr.LAYOUT_ATTR); } } private static class MessagesIterator implements Iterator { private FacesContext _facesContext; private Iterator _globalMessagesIterator; private Iterator _clientIdsWithMessagesIterator; private Iterator _componentMessagesIterator = null; private String _clientId = null; public MessagesIterator(FacesContext facesContext, boolean globalOnly) { _facesContext = facesContext; _globalMessagesIterator = facesContext.getMessages(null); if (globalOnly) { _clientIdsWithMessagesIterator = NullIterator.instance(); } else { _clientIdsWithMessagesIterator = facesContext.getClientIdsWithMessages(); } _componentMessagesIterator = null; _clientId = null; } public boolean hasNext() { return _globalMessagesIterator.hasNext() || _clientIdsWithMessagesIterator.hasNext() || (_componentMessagesIterator != null && _componentMessagesIterator.hasNext()); } public Object next() { if (_globalMessagesIterator.hasNext()) { return _globalMessagesIterator.next(); } else if (_componentMessagesIterator != null && _componentMessagesIterator.hasNext()) { return _componentMessagesIterator.next(); } else { _clientId = (String)_clientIdsWithMessagesIterator.next(); _componentMessagesIterator = _facesContext.getMessages(_clientId); return _componentMessagesIterator.next(); } } public void remove() { throw new UnsupportedOperationException(this.getClass().getName() + " UnsupportedOperationException"); } public String getClientId() { return _clientId; } }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?