public class OmniMessages extends HtmlMessages
<o:messages> is a component that extends the standard <h:messages> with
the following new features:
for componentsfor attribute. The example below
would only display messages for input1 and input3:
<h:form>
<o:messages for="input1 input3" />
<h:inputText id="input1" />
<h:inputText id="input2" />
<h:inputText id="input3" />
<h:inputText id="input4" />
</h:form>
It can even refer non-input components which in turn contains input components. The example below would only display
messages for input1 and input2:
<h:form>
<o:messages for="inputs" />
<h:panelGroup id="inputs">
<h:inputText id="input1" />
<h:inputText id="input2" />
</h:panelGroup>
<h:inputText id="input3" />
<h:inputText id="input4" />
</h:form>
You can even combine them. The example below would only display messages for input1,
input2 and input4.
<h:form>
<o:messages for="inputs input4" />
<h:panelGroup id="inputs">
<h:inputText id="input1" />
<h:inputText id="input2" />
</h:panelGroup>
<h:inputText id="input3" />
<h:inputText id="input4" />
</h:form>
for specified components has a faces
message. For example:
<o:messages for="form" message="There are validation errors. Please fix them." />
<h:form id="form">
<h:inputText id="input1" /><h:message for="input1" />
<h:inputText id="input2" /><h:message for="input2" />
<h:inputText id="input3" /><h:message for="input3" />
</h:form>
escape attribute.
<o:messages escape="false" />
Beware of potential XSS attack holes when user-controlled input is redisplayed through messages!
var attribute which sets the current FacesMessage
in the request scope and disables the default table/list rendering. For example,
<dl>
<o:messages var="message">
<dt>#{message.severity}</dt>
<dd title="#{message.detail}">#{message.summary}</dd>
</o:messages>
</dl>
Note: the iteration is by design completely stateless. It's therefore not recommended to nest form components inside
the <o:messages> component. It should be used for pure output only, like as the standard
<h:messages>. Plain output links are however no problem. Also note that the message
and escape attributes have in this case no effect. With a single message, there's no point of
iteration. As to escaping, just use <h:outputText escape="false"> the usual way.
Design notice: the component class is named OmniMessages instead of Messages to avoid
confusion with the Messages utility class.
| Modifier and Type | Field and Description |
|---|---|
static String |
COMPONENT_TYPE
The standard component type.
|
COMPONENT_FAMILYBEANINFO_KEY, bindings, COMPOSITE_COMPONENT_TYPE_KEY, COMPOSITE_FACET_NAME, CURRENT_COMPONENT, CURRENT_COMPOSITE_COMPONENT, FACETS_KEY, VIEW_LOCATION_KEY| Constructor and Description |
|---|
OmniMessages()
Construct a new
OmniMessages component whereby the renderer type is set to
MessagesRenderer.RENDERER_TYPE. |
| Modifier and Type | Method and Description |
|---|---|
void |
encodeAll(FacesContext context)
An override which delegates directly to
UIComponentBase.encodeChildren(FacesContext). |
String |
getMessage()
Returns the single INFO message to be shown instead when this component has any faces message.
|
boolean |
getRendersChildren()
Returns
true. |
String |
getVar()
Returns the name of the request attribute which exposes the current faces message.
|
Boolean |
isEscape()
Returns whether the message detail and summary should be HTML-escaped.
|
void |
setEscape(Boolean escape)
Sets whether the message detail and summary should be HTML-escaped.
|
void |
setMessage(String message)
Sets the single INFO message to be shown instead when this component has any faces message.
|
void |
setValueExpression(String name,
ValueExpression binding)
An override which checks if this isn't been invoked on
var attribute. |
void |
setVar(String var)
Sets the name of the request attribute which exposes the current faces message.
|
getDir, getErrorClass, getErrorStyle, getFatalClass, getFatalStyle, getInfoClass, getInfoStyle, getLang, getLayout, getStyle, getStyleClass, getTitle, getWarnClass, getWarnStyle, isTooltip, setDir, setErrorClass, setErrorStyle, setFatalClass, setFatalStyle, setInfoClass, setInfoStyle, setLang, setLayout, setStyle, setStyleClass, setTitle, setTooltip, setWarnClass, setWarnStylegetFamily, getFor, isGlobalOnly, isRedisplay, isShowDetail, isShowSummary, setFor, setGlobalOnly, setRedisplay, setShowDetail, setShowSummaryaddClientBehavior, addFacesListener, broadcast, clearInitialState, decode, encodeBegin, encodeChildren, encodeEnd, findComponent, getAttributes, getChildCount, getChildren, getClientBehaviors, getClientId, getDefaultEventName, getEventNames, getFacesContext, getFacesListeners, getFacet, getFacetCount, getFacets, getFacetsAndChildren, getId, getParent, getRenderer, getRendererType, getValueBinding, invokeOnComponent, isRendered, isTransient, markInitialState, processDecodes, processRestoreState, processSaveState, processUpdates, processValidators, queueEvent, removeFacesListener, restoreAttachedState, restoreState, saveAttachedState, saveState, setId, setParent, setRendered, setRendererType, setTransient, setValueBindinggetClientId, getCompositeComponentParent, getContainerClientId, getCurrentComponent, getCurrentCompositeComponent, getListenersForEventClass, getNamingContainer, getResourceBundleMap, getStateHelper, getStateHelper, getValueExpression, initialStateMarked, isCompositeComponent, isInView, isVisitable, popComponentFromEL, processEvent, pushComponentToEL, setInView, subscribeToEvent, unsubscribeFromEvent, visitTreepublic static final String COMPONENT_TYPE
public OmniMessages()
OmniMessages component whereby the renderer type is set to
MessagesRenderer.RENDERER_TYPE.public boolean getRendersChildren()
true.getRendersChildren in class UIComponentBasepublic void setValueExpression(String name, ValueExpression binding)
var attribute.
Finally it delegates to the super method.setValueExpression in class UIComponentIllegalArgumentException - When this value expression is been set on var attribute.public void encodeAll(FacesContext context) throws IOException
UIComponentBase.encodeChildren(FacesContext).encodeAll in class UIComponentIOExceptionpublic String getVar()
public void setVar(String var)
var - The name of the request attribute which exposes the current faces message.public String getMessage()
public void setMessage(String message)
message - The single INFO message to be shown instead when this component has any faces message.public Boolean isEscape()
true.public void setEscape(Boolean escape)
escape - Whether the message detail and summary should be HTML-escaped.