public class MessagesKeywordResolver extends SearchKeywordResolver
The @messages search keyword resolver will automatically resolve all UIMessage and
UIMessages components within the current UIForm. This is particularly useful when you have a relatively large form and
would like to Ajax-update only the message components when submitting the form.
<h:form id="form">
<h:inputText id="input1" ... />
<h:message id="m_input1" for="input1" />
<h:inputText id="input2" ... />
<h:message id="m_input2" for="input2" />
<h:inputText id="input3" ... />
<h:message id="m_input3" for="input3" />
...
<h:commandButton ...>
<f:ajax execute="@form" render="@messages" />
</h:commandButton>
<h:messages id="m_form" globalOnly="true" redisplay="false" />
</h:form>
This has only one prerequirement: the message component must have a fixed id attribute set as demonstrated above. Otherwise
JSF won't render anything to the client side when there are no messages and ultimately JavaScript won't be able to find it when
processing the JSF Ajax response.
This keyword resolver is already registered by OmniFaces own faces-config.xml and thus gets auto-initialized when the
OmniFaces JAR is bundled in a web application, so end-users do not need to register this keyword resolver explicitly themselves.
This keyword resolver is only compatible with <f:ajax> of Mojarra 2.3.4 or newer.
This keyword resolver is not compatible with <p:ajax> of PrimeFaces 6.x.
It's only compatible with a PrimeFaces version designed specifically for JSF 2.3.
| Constructor and Description |
|---|
MessagesKeywordResolver() |
| Modifier and Type | Method and Description |
|---|---|
boolean |
isResolverForKeyword(SearchExpressionContext context,
String keyword)
Returns
true when keyword equals "messages". |
static void |
register(Application application)
Invoked by
ApplicationProcessor. |
void |
resolve(SearchKeywordContext context,
UIComponent component,
String keyword)
Grab the current
UIForm, visit it and collect client IDs of all UIMessage and UIMessages components and
finally invoke context call back with an UIMessage component whose client ID returns a space separated collection of found
client IDs. |
isLeaf, isPassthroughpublic static void register(Application application)
ApplicationProcessor.application - Involved faces application.public boolean isResolverForKeyword(SearchExpressionContext context, String keyword)
true when keyword equals "messages".isResolverForKeyword in class SearchKeywordResolverpublic void resolve(SearchKeywordContext context, UIComponent component, String keyword)
UIForm, visit it and collect client IDs of all UIMessage and UIMessages components and
finally invoke context call back with an UIMessage component whose client ID returns a space separated collection of found
client IDs.resolve in class SearchKeywordResolverCopyright © 2012–2021 OmniFaces. All rights reserved.