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_FAMILY
BEANINFO_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, 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, getParent, getRenderer, getRendererType, getValueBinding, invokeOnComponent, isRendered, isTransient, markInitialState, processDecodes, processRestoreState, processSaveState, processUpdates, processValidators, queueEvent, removeFacesListener, restoreAttachedState, restoreState, saveAttachedState, saveState, setId, setParent, setRendered, setRendererType, setTransient, setValueBinding
getClientId, getCompositeComponentParent, getContainerClientId, getCurrentComponent, getCurrentCompositeComponent, getListenersForEventClass, getNamingContainer, getResourceBundleMap, getStateHelper, getStateHelper, getValueExpression, initialStateMarked, isCompositeComponent, isInView, isVisitable, popComponentFromEL, processEvent, pushComponentToEL, setInView, subscribeToEvent, unsubscribeFromEvent, visitTree
public 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 UIComponentBase
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 void encodeAll(FacesContext context) throws IOException
UIComponentBase.encodeChildren(FacesContext)
.encodeAll
in class UIComponent
IOException
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.