<anyxmlelement xmlns:o="http://omnifaces.org/ui"/>
												
                            | Info | Value | 
|---|---|
| ID (tag prefix) | o | 
| URI | http://omnifaces.org/ui | 
| Tag | Description | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| tree | The <o:tree>allows the developers to have full control over the markup of a tree
				hierarchy by declaring the appropriate JSF components or HTML elements in the markup. The<o:tree>does namely not render any HTML markup by itself.
				The component value must point to a tree of data objects represented by a  
				The  
				Here is a basic usage example where each parent tree node level is treated the same way via a single
				 
<o:tree value="#{bean.treeModel}" var="item" varNode="node">
  <o:treeNode>
    <ul>
      <o:treeNodeItem>
        <li>
          #{node.index} #{item.someProperty}
          <o:treeInsertChildren />
        </li>
      </o:treeNodeItem>
    </ul>
  </o:treeNode>
</o:tree>
				 | ||||||||||
| treeNode | The <o:treeNode>represents the parent tree node. Within this component, thevarattribute of the<o:tree>will expose the parent tree node. Each of its children is processed by<o:treeNodeItem>on which thevarattribute of the<o:tree>in
				turn exposes each child of the parent tree node.
				The optional  | ||||||||||
| treeNodeItem | The <o:treeNodeItem>represents the child item of the parent tree note as represented by<o:treeNode>. Within this component, thevarattribute of the parent<o:tree>component will expose the child tree node.
				Within  | ||||||||||
| treeInsertChildren | The <o:treeInsertChildren>represents the insertion point for the grand children. This is in turn
				further interpreted as<o:treeNode>. | ||||||||||
| resourceInclude | This component includes the output from a resource located at the given path. This path can not extend outside of the current Servlet context. A resource is either a Servlet or a JSP page. | ||||||||||
| deferredScript | DeferredScript is a component which defers the loading of the given script resource to the window
				load event. In other words, the given script resource is only loaded when the window is really finished with loading.
				So, the enduser can start working with the webpage without waiting for the additional scripts to be loaded. Usually,
				it are those kind of scripts which are just for progressive enhancement and thus not essential for the functioning
				of the webpage. 
				This will give bonus points with among others the Google PageSpeed tool, on the contrary to placing the script at
				bottom of body, or using  | ||||||||||
| onloadScript | o:onloadScriptis an extension to<h:outputScript>which will be executed in the
				end of the HTML body (thus when all HTML elements are initialized in the HTML DOM tree) and will re-execute its
				script body on every ajax request. This is particularly useful if you want to re-execute a specific helper script
				to manipulate the HTML DOM tree, such as (re-)adding fancy tooltips, performing highlights, etcetera, also after
				changes in the HTML DOM tree on ajax responses.You can put it anywhere in the view, it will always be relocated to the end of body. 
<o:onloadScript>alert('OnloadScript is invoked!');</o:onloadScript>
				 | ||||||||||
| highlight | o:highlightis a helper component which highlights all invalidUIInputcomponents and the
				associated labels by adding an error style class to them. Additionally, it by default focuses the first invalidUIInputcomponent. The<o:highlight />component can be placed anywhere in the view, as 
				long as there's only one of it.	Preferably put it somewhere in the master template for forms.
<h:form>
  <h:inputText value="#{bean.input1}" required="true" />
  <h:inputText value="#{bean.input1}" required="true" />
  <h:commandButton value="Submit" action="#{bean.submit}" />
</h:form>
<o:highlight />
				
				The default error style class name is  
label.error {
  color: #f00;
}
input.error, select.error, textarea.error {
  background-color: #fee;
}
				
				You can override the default error style class by the  <o:highlight styleClass="invalid" /> 
				You can disable the default focus on the first invalid input element setting the  <o:highlight styleClass="invalid" focus="false" /> | ||||||||||
| conditionalComment | o:conditionalComment is an  <!--[if lte IE 7]> <link rel="stylesheet" href="ie6-ie7.css" /> <![endif]--> However, Facelets renders them HTML-escaped and if  <h:outputText value="<!--[if lte IE 7]><link rel="stylesheet" href="ie6-ie7.css" /><![endif]-->" escape="false" /> This component is designed to solve this problem. <o:conditionalComment if="lte IE 7"> <link rel="stylesheet" href="ie6-ie7.css" /> </o:conditionalComment> Note that you cannot use this with  | ||||||||||
| validateAll | o:validateAllvalidates validates if ALL of the givenUIInputcomponents have been filled out. The default message is{0}: Please fill out all of those fields General usage of all multiple field validators
				This validator must be placed inside the same  <o:validateMultipleFields id="myId" components="foo bar baz" /> <h:message for="myId" /> <h:inputText id="foo" /> <h:inputText id="bar" /> <h:inputText id="baz" /> 
				By default, in an invalidating case, all of the referenced components will be marked invalid and a faces message will
				be added on the client ID of this validator component. The default message can be changed by the  
<o:validateMultipleFields components="foo bar baz" message="{0} are wrong!" />
				
				You can use  
<o:validateMultipleFields components="foo bar baz" message="{0} are wrong!" invalidateAll="false" />
				
				The faces message can also be shown for all of the referenced components using  <o:validateMultipleFields components="foo bar baz" message="This is wrong!" showMessageFor="@all" /> <h:inputText id="foo" /> <h:message for="foo" /> <h:inputText id="bar" /> <h:message for="bar" /> <h:inputText id="baz" /> <h:message for="baz" /> 
				The faces message can also be shown for only the invalidated components using  <o:validateMultipleFields components="foo bar baz" message="This is wrong!" showMessageFor="@invalid" /> 
				The faces message can also be shown as global message using  <o:validateMultipleFields components="foo bar baz" message="This is wrong!" showMessageFor="@global" /> 
				The faces message can also be shown for specific components referenced by a space separated collection of their
				client IDs in  <o:validateMultipleFields components="foo bar baz" message="This is wrong!" showMessageFor="foo baz" /> 
				The  
				The validator can be disabled by the  
<o:validateMultipleFields components="foo bar baz" disabled="#{param.validationDisabled}" />
				
				There is a read-only  
<o:validateMultipleFields id="myId" binding="#{myId}" components="foo bar baz" />
<h:panelGroup rendered="#{myId.validationFailed}">
	Validation has failed! <h:message for="myId" />
</h:panelGroup>
				 | ||||||||||
| validateAllOrNone | o:validateAllOrNonevalidates validates if at least ALL of the givenUIInputcomponents have been filled out or that NONE of the givenUIInputcomponents have been
				filled out. The default message is{0}: Please fill out all or none of those fields 
				For general usage instructions, refer  | ||||||||||
| validateOneOrMore | o:validateOneOrMorevalidates if at least ONE of the givenUIInputcomponents has been filled out. The default message is{0}: Please fill out at least one of those fields 
				For general usage instructions, refer  | ||||||||||
| validateOne | o:validateOnevalidates if ONLY ONE of the givenUIInputcomponents has been filled out. The default message is{0}: Please fill out only one of those fields 
				For general usage instructions, refer  | ||||||||||
| validateOneOrNone | o:validateOneOrNonevalidates if ONLY ONE of the givenUIInputcomponents has been filled
				out or that NONE of the givenUIInputcomponents have been filled out. The default message is{0}: Please fill out only one or none of those fields 
				For general usage instructions, refer  | ||||||||||
| validateEqual | o:validateEqualvalidates if ALL of the givenUIInputcomponents have the
				same value. The default message is{0}: Please fill out the same value for all of those fields 
				For general usage instructions, refer  | ||||||||||
| validateUnique | o:validateUniquevalidates if ALL of the givenUIInputcomponents have an
				unique value. The default message is{0}: Please fill out an unique value for all of those fields 
				For general usage instructions, refer  | ||||||||||
| validateOrder | ValidateOrder validates if the values of the given UIInputcomponents as specified in
				thecomponentsattribute are in the order as specified by thetypeattribute which accepts
				the following values:
 {0}: Please fill out the values of all those fields in order 
				For general usage instructions, refer  
				This validator has the additional requirement that the to-be-validated values must implement  | ||||||||||
| validateMultiple | ValidateMultiple allows the developer to validate multiple fields by a custom validator method: 
<o:validateMultiple id="myId" components="foo bar baz" validator="#{bean.validateValues}" />
<h:message for="myId" />
<h:inputText id="foo" />
<h:inputText id="bar" />
<h:inputText id="baz" />
				
public boolean validateValues(FacesContext context, List<UIInput> components, List<Object> values) {
	// ...
}
				Or by a managed bean instance which implements the  
<o:validateMultiple id="myId" components="foo bar baz" validator="#{validateValuesBean}" />
<h:message for="myId" />
<h:inputText id="foo" />
<h:inputText id="bar" />
<h:inputText id="baz" />
				
@ManagedBean
@RequestScoped
public class ValidateValuesBean implements MultiFieldValidator {
	@Override
	boolean validateValues(FacesContext context, List<UIInput> components, List<Object> values) {
		// ...
	}
}
				 | ||||||||||
| validator | The <o:validator>basically extends the<f:validator>tag family with the
				possibility to evaluate the value expression in all attributes on a per request basis instead of on a per view
				build time basis. This allows the developer to change the attributes on a per request basis, such as thedisabledattribute.
<o:validator validatorId="someValidatorId" disabled="#{param.disableValidation}" />
				Note that not all available attributes are listed. This depends on the validator you're specifying.
				When you specify for example the standard  
<o:validator validatorId="javax.faces.LongRange" minimum="#{item.minimum}" maximum="#{item.maximum}" />
				 | ||||||||||
| converter | The <o:converter>basically extends the<f:converter>tag family with the
				possibility to evaluate the value expression in all attributes on a per request basis instead of on a per view
				build time basis. This allows the developer to change the attributes on a per request basis.
				When you specify for example the standard  
<o:converter converterId="javax.faces.DateTime" pattern="#{item.pattern}" locale="#{item.locale}" />
				 | ||||||||||
| inputFile | The <o:inputFile>is a component that extends the standard<h:inputFile>and
				adds support formultiple,directory,acceptandmaxsizeattributes, along with built-in server side validation onacceptandmaxsizeattributes.
				Additionally, it makes sure that the value of HTML file input element is never rendered. The standard<h:inputFile>rendersPart#toString()to it which is unnecessary. | ||||||||||
| inputHidden | The <o:inputHidden>is a component that extends the standard<h:inputHidden>and changes the behavior to immediately convert, validate and update during apply request values phase, regardless of
				any conversion/validation errors on otherUIInputcomponents within the same form. The standard<h:inputHidden>follows the same lifecycle as otherUIInputcomponents which is in
				the end unintuive as hidden input fields are usually under control of the developer. | ||||||||||
| viewParam | ViewParameter is a component that extends the standard UIViewParameterand provides a
					stateless mode of operation and fixes the issue wherein null model values are converted to empty string parameters
					in query string (e.g. whenincludeViewParams=true) and the (bean) validation never being triggered
					when the parameter is completely absent in query string, causing e.g.@NotNullto fail.The standard UIViewParameter implementation calls the model setter again after postback. This is not always desired when being bound to a view scoped bean and can lead to performance problems when combined with an expensive converter. To solve this, this component by default stores the submitted value as a component property instead of in the model (and thus in the view state in case the binding is to a view scoped bean). 
					The standard UIViewParameter implementation calls the converter regardless of whether the evaluated model value is
					 
					The standard UIViewParameter implementation uses an internal "is required" check when the submitted value is
					 
					You can use it the same way as  | ||||||||||
| scriptParam | 
The  Usage
It's similar to the  
<f:metadata>
    <o:scriptParam script="new Date().getTimezoneOffset()" value="#{bean.clientTimeZoneOffset}" />
    <o:scriptParam script="window.screen.width" value="#{bean.clientScreenWidth}" />
    <o:scriptParam script="someFunctionName()" value="#{bean.resultOfSomeFunctionName}" />
</f:metadata>
You can use the  
<f:metadata>
    <o:scriptParam script="foo()" value="#{bean.resultOfFoo}" render="fooResult" />
</f:metadata>
...
<h:body>
    ...
    <h:panelGroup id="fooResult">
        <ui:fragment rendered="#{not empty bean.resultOfFoo}">
            The result of foo() script is: #{bean.resultOfFoo}
        </ui:fragment>
    </h:panelGroup>
    ...
</h:body>
Note that as it extends from the standard  
<f:metadata>
    <o:scriptParam script="window.navigator" value="#{bean.clientNavigator}" />
</f:metadata>
With aclientNavigatorbeing an instance ofjavax.json.JsonObject:private JsonObject clientNavigator;And this converter: 
package com.example;
import java.io.StringReader;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.ConverterException;
import javax.faces.convert.FacesConverter;
import javax.json.Json;
import javax.json.JsonObject;
@FacesConverter(forClass = JsonObject.class)
public class JsobObjectConverter implements Converter<JsonObject> {
    @Override
    public String getAsString(FacesContext context, UIComponent component, JsonObject modelValue) {
        if (modelValue == null) {
            return "";
        }
        return modelValue.toString();
    }
    @Override
    public JsonObject getAsObject(FacesContext context, UIComponent component, String submittedValue) {
        if (submittedValue == null || submittedValue.isEmpty()) {
            return null;
        }
        try {
            return Json.createReader(new StringReader(submittedValue)).readObject();
        }
        catch (Exception e) {
            throw new ConverterException("Not a valid JSON object", e);
        }
    }
}
 | ||||||||||
| hashParam | 
The  
The "hash query string" is the part in URL after the  https://example.com/page.xhtml#foo=baz&bar=kaz This specific part of the URL (also called hash fragment identifier) is by default not sent to the server. This component will on page load send it anyway and on every ajax request update the hash query string in client side when the model value has changed in server side. Usage
It's very similar to the  
<f:metadata>
    <o:hashParam name="foo" value="#{bean.foo}" />
    <o:hashParam name="bar" value="#{bean.bar}" />
</f:metadata>
This only requires that the JSF page has at least one {@link UIForm} component, such as  
You can use the  
<f:metadata>
    <o:hashParam name="foo" value="#{bean.foo}" render="fooResult" />
    <o:hashParam name="bar" value="#{bean.bar}" />
</f:metadata>
...
<h:body>
    ...
    <h:panelGroup id="fooResult">
        ...
    </h:panelGroup>
    ...
</h:body>
You can use the  
<f:metadata>
    <o:hashParam name="foo" value="#{bean.foo}" />
    <o:hashParam name="bar" value="#{bean.bar}" default="kaz" />
</f:metadata>
When  | ||||||||||
| viewAction | The <o:viewAction>is a component that extends the standard<f:viewAction>and
					changes theifattribute to be evaluated duringINVOKE_APPLICATIONphase instead of theAPPLY_REQUEST_VALUESphase. This allows developers to let theifattribute check the
					converted and validated model values before performing the view action, which results in much more intuitive behavior.
					In below example, the  
					<f:viewParam name="foo" value="#{bean.foo}" converter="fooConverter" />
					<f:viewAction action="otherpage" if="#{bean.foo eq null}" />
					
					This is however not possible with standard  
					<f:viewParam name="foo" value="#{bean.foo}" converter="fooConverter" />
					<o:viewAction action="otherpage" if="#{bean.foo eq null}" />
					 | ||||||||||
| resolveComponent | ResolveComponent is a utility component via which a component can be looked up by its ID and a reference to it put in either the "facelet scope" (default) or the request scope. | ||||||||||
| moveComponent | MoveComponent is a utility component via which a components and behaviors can be moved to a target component at various ways. | ||||||||||
| methodParam | o:methodParamis a tag handler that can be used to pass a method expression
				into a Facelets tag.By default this is not possible, and the expression that's intended to be a method expression will be created and made available as a value expression. This handler should be placed inside a Facelets tag as follows: 
<ui:composition
	xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
	xmlns:h="http://xmlns.jcp.org/jsf/html"
	xmlns:o="http://omnifaces.org/ui"
>
	<o:methodParam name="method" value="#{action}"/>
	<h:commandButton value="test" action="#{method}" />
</ui:composition>
				
				Assuming the above is a tag called  
<test:actionmethod action="#{methodParamBean.doAction}" />
				
				In case a method with no parameters is passed that is to be used as an action listener with no parameters, then the component
				using this method unfortunely has to be wrapped by a component that puts the method in request scoped (with nested visibility),
				e.g. by using  
<ui:repeat var="method" value="#{method}">
	<h:commandButton value="test" actionListener="#{method}" />
</ui:repeat>
				
				Using modern EL implementations, this is not needed in case the EL expression references the method using explicit parenthesis,
				e.g.  | ||||||||||
| tagAttribute | Declare a tagfile attribute. This should in nested tags shield same attributes set on parent tags. This also offers the possibility to declare a default value. | ||||||||||
| componentIdParam | ComponentIdParam is a component that allows component ids to be provided as request parameters
 					causing only components with matching ids to be rendered. Both simple component ids as well as client ids are supported. Components can be rendered without their parents having to be rendered. As such, e.g. single rows appearing in a table can be rendered without any of the surrounding markup appearing in the response. The intended usage of this component is to allow client-side scripts to request markup for specific components via a GET request (as opposed to AJAX based post-backs). This component is used in the same way view parameters are and needs to be put into the metadata section of a Facelet. | ||||||||||
| outputFormat | OutputFormat is a component that extends the standard HtmlOutputFormatand provides support
				for capturing the output and exposing it into the request scope by the variable name as specified by thevarattribute. | ||||||||||
| outputLabel | o:outputLabelis a component that extends the standard outputLabel and provides extra support for
	 			automatically setting its value as the label of the component identified by itsforattribute.It renders an HTML "label" element. If a "for" attribute is specified, the component specified by the value of the "for" attribute is queried for its client id, which is then rendered as the value of the "for" attribute of the HTML label element. | ||||||||||
| graphicImage | The <o:graphicImage>is a component that extends the standard<h:graphicImage>with support for referencing anInputStreamorbyte[]property invalueattribute.
				This property must point to a stateless@ApplicationScopedbean (both JSF and CDI
				scopes are supported). | ||||||||||
| url | The <o:url>is a component which renders the given target URL or JSF view ID as a bookmarkable
				URL with support for adding additional query string parameters to the URL via nested<f:param>and<o:param>, and for exposing it into the request scope by the variable name as specified by
				thevarattribute instead of rendering it. | ||||||||||
| sitemapUrl | The <o:sitemapUrl>is a component which renders the given target URL or JSF view ID as a sitemap
				URL with support for adding additional query string parameters to the URL via nested<f:param>and<o:param>. | ||||||||||
| form | Form is a component that extends the standard UIFormand submits by default
				to current request URI with query string and offers in combination with the<o:ignoreValidationFailed>tag on anUICommandcomponent the possibility to ignore
				validation failures so that the invoke action phase will be executed anyway. It also supports adding custom
				query string parameters via a nested<o|h:param>. | ||||||||||
| cache | Cache is a component that initially renders the output of its children into a buffer
		   		instead of to the response. This output is then inserted into a cache and on subsequent requests the
		   		content retrieved from the cache is used. By default the viewid concatenated to the component id via an underscore is used as the cache key. Note that this component does not support a cache loader and locking mechanism. This mean several simultaenous page requests may render the same content and it's undetermined which of those will end up being cached. An optional caching provider (see below) can be set to control the caching implementation that is used for the actual caching. If no such provider is installed, a default caching implementation is used that's based on https://github.com/ben-manes/concurrentlinkedhashmap in case a maximum cache capacity is set, or on a plain ConcurrentMap if no capacity is set. Setting a custom caching providerA custom caching provider can be set by using the  <context-param> <param-name>org.omnifaces.CACHE_PROVIDER</param-name> <param-value>com.example.MyProvider</param-value> </context-param> 
				The default provider,  Global settingsFor the default provider, the maximum capacity and the default time to live can be specified for the
				supported scopes "session" and "application". If the maximum capacity is reached, an entry will be
				evicted following a least recently used policy. The default time to live specifies for how long
				entries are considered to be valid. A value for the  
 
 | ||||||||||
| cacheValue | Tag handler (runs at tree build-time) that makes a value expression available under the given name that caches its value.
				Although the value expressions scope is that of the entire Facelet in which this tag appears, the value it self is cached
				using the parent Cache component. 
				This means that if the parent  
				The direct parent of this component MUST be  
				The intended use of this is to explicitly cache a value expression that is used by one of the component children of  | ||||||||||
| importConstants | The  
public class Foo {
	public static final String FOO1 = "foo1";
	public static final String FOO2 = "foo2";
}
public interface Bar {
	public static final String BAR1 = "bar1";
	public static final String BAR2 = "bar2";
}
public enum Baz {
	BAZ1, BAZ2;
}
				The constant field values of the above types can be mapped into the request scope as follows: 
<o:importConstants type="com.example.Foo" />
<o:importConstants type="com.example.Bar" />
<o:importConstants type="com.example.Baz" var="Bazzz" />
...
#{Foo.FOO1}, #{Foo.FOO2}, #{Bar.BAR1}, #{Bar.BAR2}, #{Bazzz.BAZ1}, #{Bazzz.BAZ2}
				The map is by default stored in the request scope by the simple name of the type as variable name. You can override
				this by explicitly specifying the  The resolved constants are by reference stored in the cache to improve retrieving performance. | ||||||||||
| importFunctions | The  
<o:importFunctions type="java.lang.Math" var="m" />
<o:importFunctions type="org.omnifaces.util.Faces" />
...
#{m:abs(-10)}
#{m:max(bean.number1, bean.number2)}
...
<base href="#{Faces:getRequestBaseURL()}" />
				The functions prefix becomes by default the simple name of the type. You can override this by explicitly
				specifying the  Note that the colon  The resolved functions are by reference stored in the cache to improve retrieving performance. | ||||||||||
| ignoreValidationFailed | The <o:ignoreValidationFailed>allows the developer to ignore validation failures when
				executing anUICommandaction. This taghandler must be placed inside anUICommandcomponent and the
				parentUIFormmust be an<o:form>.Any validation errors will be ignored and thus not be displayed. Note that the model values will (obviously) only be updated for components which have passed the validation. | ||||||||||
| skipValidators | The <o:skipValidators>allows the developer to skip validators when
				executing a submit. This taghandler must be placed inside the component that invokes the submit, may be anUICommand(both ajaxified or not) as well as anyClientBehaviorHolder(ajax enabled) component.Validation will happen, but no validator will be executed since they will be temporary detached from processed components. Conversion errors could still occur. Note that the model values will be updated for all processed components. | ||||||||||
| enableRestorableView | The <o:enableRestorableView>instructs the view handler to recreate the entire view whenever the
				view has been expired, i.e. whenever#restoreView(FacesContext, String)returnsnulland the
				current request is a postback. This effectively preventsViewExpiredExceptionon the view. This tag needs to
				be placed in<f:metadata>of the view.There are however technical design limitations: please consult the javadoc for details. To the point, the bean associated with the view has to be exclusively request scoped in order to properly recreate the same view. | ||||||||||
| validateBean | The <o:validateBean>allows the developer to control bean validation groups on a
				per-UICommandorUIInputcomponent basis. Usage example:<h:commandButton> <o:validateBean groups="javax.validation.groups.Default,com.example.MyGroup"/> </h:commandButton> | ||||||||||
| validateUniqueColumn | ValidateUniqueColumn validates if the given UIInputcomponent in anUIDatacomponent
				has an unique value throughout all rows, also those not visible by pagination. This validator works directly on the
				data model and may therefore not work as expected if the data model does not represent all available
				rows of theUIDatacomponent (e.g. when there's means of lazy loading).The default message is {0}: Please fill out an unique value for the entire column. Duplicate found in row {1} Usage example: 
<h:dataTable value="#{bean.items}" var="item">
  <h:column>
	<h:inputText value="#{item.value}">
	  <o:validateUniqueColumn />
	</h:inputText>
  </h:column>
</h:dataTable>
				
				In an invalidating case, only the first row on which the value is actually changed (i.e. the value change event has
				been fired on the input component in the particular row) will be marked invalid and a faces message will be added
				on the client ID of the input component in the particular row. The default message can be changed by the
				 <o:validateUniqueColumn message="Duplicate value!" /> | ||||||||||
| massAttribute | The <o:massAttribute> sets an attribute of the given name and value on all nested components,
				if they don't already have an attribute set. On boolean attributes like disabled,readonlyandrendered, any literal (static) attribute value will be ignored and overridden. Only if they have
				already a value expression#{...}as attribute value, then it won't be overridden. This is a technical
				limitation specifically for boolean attributes as they don't default tonull.For example, the following setup 
<o:massAttribute name="disabled" value="true">
	<h:inputText id="input1" />
	<h:inputText id="input2" disabled="true" />
	<h:inputText id="input3" disabled="false" />
	<h:inputText id="input4" disabled="#{true}" />
	<h:inputText id="input5" disabled="#{false}" />
</o:massAttribute>
				will set thedisabled="true"attribute ininput1,input2andinput3as those are the only components without a value expression on the boolean attribute.As another general example without booleans, the following setup 
<o:massAttribute name="styleClass" value="#{component.valid ? '' : 'error'}">
	<h:inputText id="input1" />
	<h:inputText id="input2" styleClass="some" />
	<h:inputText id="input3" styleClass="#{'some'}" />
	<h:inputText id="input4" styleClass="#{null}" />
</o:massAttribute>
				will only set thestyleClass="#{component.valid ? '' : 'error'}"attribute ininput1as
				that's the only component on which the attribute is absent.
				Do note that the specified EL expression will actually be evaluated on a per-component basis.
				To target a specific component (super)class, use the  
<o:massAttribute name="styleClass" value="#{component.valid ? '' : 'error'}" target="javax.faces.component.UIInput">
	<h:outputLabel for="input1" />
	<h:inputText id="input1" />
	<h:outputLabel for="input2" />
	<h:inputText id="input2" />
	<h:outputLabel for="input3" />
	<h:inputText id="input3" />
</o:massAttribute>
				 | ||||||||||
| viewParamValidationFailed | <o:viewParamValidationFailed>allows the developer to handle a view parameter validation failure
				with either a redirect or a HTTP error status, optionally with respectively a flash message or HTTP error message.
				This tag can be placed inside<f:metadata>or<f|o:viewParam>. When placed in<f|o:viewParam>, then it will be applied when the particular view parameter has a validation
				error as perUIViewParameter#isValid(). When placed in<f:metadata>, and no one view
				parameter has already handled the validation error via its own<o:viewParamValidationFailed>,
				then it will be applied when there's a general validation error as perFacesContext#isValidationFailed().
				The  f:viewParam required="true" fail
				As a precaution, the  ExamplesWith the example below, when at least one view param is absent, then the client will be returned a HTTP 400 error. <f:metadata> <o:viewParam name="foo" required="true" /> <o:viewParam name="bar" required="true" /> <o:viewParamValidationFailed sendError="400" /> </f:metadata> With the example below, only when the "foo" parameter is absent, then the client will be redirected to "login.xhtml". When the "bar" parameter is absent, nothing new will happen. The process will proceed "as usual". I.e. the validation error will end up as a faces message in the current view the usual way. <f:metadata> <o:viewParam name="foo" required="true"> <o:viewParamValidationFailed sendRedirect="login.xhtml" /> </o:viewParam> <o:viewParam name="bar" required="true" /> </f:metadata> With the example below, only when the "foo" parameter is absent, regardless of the "bar" or "baz" parameters, then the client will be returned a HTTP 401 error. When the "foo" parameter is present, but either "bar" or "baz" parameter is absent, then the client will be redirected to "search.xhtml". <f:metadata> <o:viewParam name="foo" required="true"> <o:viewParamValidationFailed sendError="401" /> </o:viewParam> <o:viewParam name="bar" required="true" /> <o:viewParam name="baz" required="true" /> <o:viewParamValidationFailed sendRedirect="search.xhtml" /> </f:metadata> 
				In a nutshell: when there are multiple  Messaging
				By default, the first occurring faces message on the parent component will be copied, or when there is none, then
				the first occurring global faces message will be copied. When  
				You can override this message by explicitly specifying the  <o:viewParamValidationFailed sendRedirect="search.xhtml" message="You need to perform a search." /> ... <o:viewParamValidationFailed sendError="401" message="Authentication failed. You need to login." />* Design notes
				You can technically nest multiple  
				You can not change the HTTP status code of a redirect. This is not a JSF limitation, but a HTTP
				limitation. The status code of a redirect will always end up the one of the redirected response.
				If you intend to "redirect" with a different HTTP status code, then you should be using  | ||||||||||
| commandScript | CommandScript is an extension to  
				The  
				Basic usage example of  
<h:form>
  <h:inputText value="#{bean.input1}" ... />
  <h:inputText value="#{bean.input2}" ... />
  <h:inputText value="#{bean.input3}" ... />
  <o:commandScript name="submitForm" action="#{bean.submit}" render="@form" />
</h:form>
<input type="button" value="submit" onclick="submitForm()" />
				
				Usage example which uses the  
<h:form>
  <h:dataTable id="data" value="#{bean.data}" ...>...</h:dataTable>
  <o:commandScript name="updateData" action="#{bean.reloadData}" render="data" />
</h:form>
<h:outputScript target="body">setInterval(updateData, 3000);</h:outputScript>
				The component also supports nesting of<f:param>,<f:actionListener>and<f:setPropertyActionListener>, exactly like as in<h:commandXxx>. The function
				also supports a JS object as argument which will then end up in the HTTP request parameter map:
functionName({ name1: "value1", name2: "value2" });
				With the above example, the parameters are in the action method available as follows: 
String name1 = Faces.getRequestParameter("name1"); // value1
String name2 = Faces.getRequestParameter("name2"); // value2
				 | ||||||||||
| param | Param is a component that extends the standard UIParameterto implementValueHolderand thus support aConverterto convert the supplied value to string, if necessary.
				You can use it the same way as  
				<h:outputFormat value="#{bundle.paragraph}" escape="false">
				  <o:param><h:link outcome="contact" value="#{bundle.contact}" /></o:param>
				</h:outputFormat>
				with this bundle 
				paragraph = Please {0} for more information.
				contact = contact us
				will result in the link being actually encoded as output format parameter value. | ||||||||||
| messages | The <o:messages>is a component that extends the standard<h:messages>with
				the following new features:
 
				Design notice: the component class is named  | ||||||||||
| socket | o:socketopens an one-way (server to client) web socket based push conntection
				in client side which can be reached from server side viaorg.omnifaces.cdi.PushContextinterface injected in any CDI/container managed artifact viaorg.omnifaces.cdi.Pushannotation.
				For detailed usage instructions, see  | ||||||||||
| selectItemGroups | The o:selectItemGroupsis an extension of {@link UISelectItems} which allows you to iterate over a nested collection representing groups of select items.
				This is the {@link UIComponent} counterpart ofjavax.faces.model.SelectItemGroup.
				There is no equivalent (yet) in the standard JSF API. Currently the only way to represent {@link SelectItemGroup} in UI is to manually create and populate them in a backing bean which can end up to be quite verbose.
				Below example assumes a  
<h:selectOneMenu value="#{bean.selectedProduct}" converter="omnifaces.SelectItemsConverter">
    <f:selectItem itemValue="#{null}" />
    <o:selectItemGroups value="#{bean.categories}" var="category" itemLabel="#{category.name}">
        <f:selectItems value="#{category.products}" var="product" itemLabel="#{product.name}" />
    </o:selectItemGroups>
</h:selectOneMenu>
				 | ||||||||||
| pathParam | The PathParamis a component that extends the OmniFacesParamto supportMultiViewsfeature ofFacesViews. It is done by rendering the supplied parameters 
                        of such components as<h:link>and<h:button>among others as path parameters and not as 
                        query parameters as otherwise will be produced by<o:param>and<f:param>tags.
                        The component has built-in support for a  
                        This component doesn't support returning encoded output of its children as parameter value in case no value is present.
                        This feature is provided by  Also, the name attribute must not be specified for this component as it already evaluates to a predefined one. 
                        This component is used to create bookmarkable URLs via standard outcome target components that take into account
                         In the following example the link to the multi view page will be rendered with two path parameters: 
<h:link value="Link" outcome="multiview-supported-path">
    <o:pathParam value="first" />
    <o:pathParam value="second" />
</h:link>
                        The code above will be rendered as:<a id="..." name="..." href="/context-path/multiview-supported-path/first/second">Link</a>.
                        The path parameters will be available via@Inject @Param(pathIndex=0) private String first;and@Inject @Param(pathIndex=1) private String second;the usual way. | 
Output generated by Vdldoc View Declaration Language Documentation Generator.