View Source

h2. Overview
_Since 4.1_

The _ace:clientValidateLength_ component validates the input of the enclosing component by allowing only the text content with its length within the defined limits to be submitted. In the case of ace:checkboxButtons component the length constraints are applied to the number of checked checkboxes.

The _ace:clientValidateLength_ component can be used to validate the following:
* A minimum length (_minimum_ attribute)
* A maximum length (_maximum_ attribute)
* A length range (_minimum_ and _maximum_ attributes)

{tip}See the ICEfaces Showcase [Live Demo|http://icefaces-showcase.icesoft.org/showcase.jsf?grp=ace:clientValidateLength] of this component, complete with source code.{tip}


h2. Getting Started
{panel}
{code:xml|borderStyle=dashed}
<html ... xmlns:ace="http://www.icefaces.org/icefaces/components">
<h:body>
<h:form>
...

// Validates that the entered text value has a minimum length of 5 characters.
<ace:textEntry id="password" label="Password " labelPosition="left"
value="#{clientValidateLength.password}" secret="true">

<ace:clientValidateLength minimum="5" />
</ace:textEntry>
...

// Validates that between 2 and 3 checkboxes have been selected/checked.
<ace:checkboxButtons id="Selections"
header="Choose 2 or 3 letters"
value="#{clientValidateLength.selected}" labelPosition="top">
<f:selectItem itemLabel="A" itemValue="One" />
<f:selectItem itemLabel="B" itemValue="Two" />
<f:selectItem itemLabel="C" itemValue="Three" />
<f:selectItem itemLabel="D" itemValue="Four" />

<ace:clientValidateLength minimum="2" maximum="3"/>
</ace:checkboxButtons>
...

</h:form>
...
</h:body>
</html>
{code}
{panel}

h2. Attributes

{tip:title=TagLib Documentation}This section covers attributes involved in the typical use-cases for this component. For reference, the complete taglib documentation for this component is available [here|http://www.icefaces.org/docs/v4_latest/ace/tld/ace/clientValidateLength.html].{tip}
{panel}
*minimum* required length of the input.
{panel}
{panel}
*maximum* allowed length of the input.
{panel}

h2. Validation Behaviour

* Client validation occurs initially when the component value is attempted to be submitted to the server, either via an ace:ajax partial-submit or a full form submit. If the client validation fails the submit to the server is aborted and the appropriate error message is displayed in an associated ace:message, ace:messages, or ace:growlMessages component (without requiring a server-roundtrip). Thus, a form submit with multiple components is processed atomically and will be completely aborted if any of the components within it fail client validation.
* Before submitting an entered component value the first time (either via full form submit, or an ace:ajax partial-submit), the user can tab through components in the form without triggering annoying validation messages - they won't get bugged before having the chance to actually enter a correct value.
* However, once a component is marked invalid by a previous validation failure, it is eagerly validated: As soon as the user has entered the necessary value, the error message is removed, without requiring a form submit.
* Client validation supports the "immediate='true'" attribute on ace:pushButton and ace:linkButton. When "immediate='true'" the button submit will occur regardless of whether one or more components in the form are failing client validation.

h2. Event Listeners

No direct event listener is associated with this component.

h2. Client Behavior Events

No direct client behavior is associated with this component.

h2. JavaScript API

Not applicable.

h2. Keyboard and ARIA Support

Not applicable.

h2. CSS Classes

Not applicable.

h2. Known Issues

* Client Validation is not supported with the ace:maskedEntry component.

h2. Additional Resources

None.