public class OmniMessages extends HtmlMessages
The <o:messages>
is a component that extends the standard <h:messages>
with
the following new features:
for
components
Possibility to specify multiple client IDs space separated in the for
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>
Show a single custom message whenever the component has received any faces message. This is particularly useful
when you want to display a global message in case any of the in 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>
Control HTML escaping by the new escape
attribute.
<o:messages escape="false" />
Beware of potential XSS attack holes when user-controlled input is redisplayed through messages!
Control iteration markup fully by the new 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.
The component class is named OmniMessages
instead of Messages
to avoid
confusion with the Messages
utility class.
MessagesRenderer
Modifier and Type | Field and Description |
---|---|
static String |
COMPONENT_TYPE
The standard component type.
|
COMPONENT_FAMILY
ATTRS_WITH_DECLARED_DEFAULT_VALUES, BEANINFO_KEY, bindings, COMPOSITE_COMPONENT_TYPE_KEY, COMPOSITE_FACET_NAME, CURRENT_COMPONENT, CURRENT_COMPOSITE_COMPONENT, FACETS_KEY, HONOR_CURRENT_COMPONENT_ATTRIBUTES_PARAM_NAME, 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 |
---|---|
String |
getMessage()
Returns the single INFO message to be shown instead when this component has any faces message.
|
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, getRole, getStyle, getStyleClass, getTitle, getWarnClass, getWarnStyle, isTooltip, setDir, setErrorClass, setErrorStyle, setFatalClass, setFatalStyle, setInfoClass, setInfoStyle, setLang, setLayout, setRole, setStyle, setStyleClass, setTitle, setTooltip, setWarnClass, setWarnStyle
getFamily, getFor, isGlobalOnly, isRedisplay, isShowDetail, isShowSummary, setFor, setGlobalOnly, setRedisplay, setShowDetail, setShowSummary
addClientBehavior, addFacesListener, broadcast, clearInitialState, decode, encodeBegin, encodeChildren, encodeEnd, findComponent, getAttributes, getChildCount, getChildren, getClientBehaviors, getClientId, getDefaultEventName, getEventNames, getFacesContext, getFacesListeners, getFacet, getFacetCount, getFacets, getFacetsAndChildren, getId, getListenersForEventClass, getParent, getPassThroughAttributes, getRenderer, getRendererType, getRendersChildren, getValueBinding, invokeOnComponent, isRendered, isTransient, markInitialState, processDecodes, processRestoreState, processSaveState, processUpdates, processValidators, queueEvent, removeFacesListener, restoreAttachedState, restoreState, saveAttachedState, saveState, setId, setParent, setRendered, setRendererType, setTransient, setValueBinding, subscribeToEvent, unsubscribeFromEvent
encodeAll, getClientId, getCompositeComponentParent, getContainerClientId, getCurrentComponent, getCurrentCompositeComponent, getNamingContainer, getPassThroughAttributes, getResourceBundleMap, getStateHelper, getStateHelper, getTransientStateHelper, getTransientStateHelper, getValueExpression, initialStateMarked, isCompositeComponent, isInView, isVisitable, popComponentFromEL, processEvent, pushComponentToEL, restoreTransientState, saveTransientState, setInView, visitTree
public static final String COMPONENT_TYPE
public OmniMessages()
OmniMessages
component whereby the renderer type is set to
MessagesRenderer.RENDERER_TYPE
.public void setValueExpression(String name, ValueExpression binding)
var
attribute.
Finally it delegates to the super method.setValueExpression
in class UIComponent
IllegalArgumentException
- When this value expression is been set on var
attribute.public 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.Copyright © 2012–2020 OmniFaces. All rights reserved.