public class UIInput extends UIOutput implements EditableValueHolder
UIInput is a UIComponent that represents a component that both displays output to
 the user (like UIOutput components do) and processes request
 parameters on the subsequent request that need to be decoded.  There
 are no restrictions on the data type of the local value, or the
 object referenced by the value binding expression (if any); however,
 individual Renderers will generally impose
 restrictions on the type of data they know how to display.
During the Apply Request Values phase
 of the request processing lifecycle, the decoded value of this
 component, usually but not necessarily a String, must be stored - but
 not yet converted - using setSubmittedValue().  If the
 component wishes to indicate that no particular value was submitted,
 it can either do nothing, or set the submitted value to
 null.
By default, during the Process Validators phase of the
 request processing lifecycle, the submitted value will be converted
 to a typesafe object, and, if validation succeeds, stored as a local
 value using setValue().  However, if the
 immediate property is set to true, this
 processing will occur instead at the end of the Apply Request
 Values phase.
During the Render Response phase of the request
 processing lifecycle, conversion for output occurs as for UIOutput.
When the validate() method of this UIInput
 detects that a value change has actually occurred, and that all
 validations have been successfully passed, it will queue a ValueChangeEvent.  Later on, the broadcast() method
 will ensure that this event is broadcast to all interested listeners.
 This event will be delivered by default in the Process
 Validators phase, but can be delivered instead during Apply
 Request Values if the immediate property is set to
 true. If the validation
 fails, the implementation must call FacesContext.validationFailed().
By default, the rendererType property must be set to
 "Text".  This value can be changed by calling the
 setRendererType() method.
| Modifier and Type | Field and Description | 
|---|---|
| static String | ALWAYS_PERFORM_VALIDATION_WHEN_REQUIRED_IS_TRUEIf this param is set, and calling toLowerCase().equals("true") on a String representation of its value returns true, validation must be performed, even when there is no corresponding value for this component in the incoming request. | 
| static String | COMPONENT_FAMILYThe standard component family for this component. | 
| static String | COMPONENT_TYPEThe standard component type for this component. | 
| static String | CONVERSION_MESSAGE_IDThe message identifier of the
  FacesMessageto be created if
 a conversion error occurs, and neither the page author nor
 theConverterExceptionprovides a message. | 
| static String | EMPTY_STRING_AS_NULL_PARAM_NAMEThe name of a context parameter that indicates how empty strings need to be interpreted. | 
| static String | REQUIRED_MESSAGE_IDThe message identifier of the
  FacesMessageto be created if
 a required check fails. | 
| static String | UPDATE_MESSAGE_IDThe message identifier of the
  FacesMessageto be created if
 a model update error occurs, and the thrown exception has
 no message. | 
| static String | VALIDATE_EMPTY_FIELDS_PARAM_NAMEThe name of a context parameter that indicates how empty values should be handled with respect to validation. | 
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 | 
|---|
| UIInput()Create a new  UIInputinstance with default property
 values. | 
| Modifier and Type | Method and Description | 
|---|---|
| void | addValidator(Validator validator) | 
| void | addValueChangeListener(ValueChangeListener listener)Add a new  ValueChangeListenerto the set of listeners
 interested in being notified whenValueChangeEvents occur. | 
| void | clearInitialState()
 For each of the attached objects on this instance that implement  | 
| protected boolean | compareValues(Object previous,
             Object value)Return  trueif the new value is different from
 the previous value. | 
| void | decode(FacesContext context)
 Decode any new state of this  UIComponentfrom the request contained in the
 specifiedFacesContext, and store this state as needed. | 
| protected Object | getConvertedValue(FacesContext context,
                 Object newSubmittedValue)Convert the submitted value into a "local value" of the
 appropriate data type, if necessary. | 
| String | getConverterMessage()If there has been a call to  setConverterMessage(java.lang.String)on this
 instance, return the message. | 
| String | getFamily()Return the identifier of the component family to which this component belongs. | 
| String | getRequiredMessage()If there has been a call to  setRequiredMessage(java.lang.String)on this
 instance, return the message. | 
| Object | getSubmittedValue()Return the submittedValue value of this  UIInputcomponent. | 
| MethodBinding | getValidator()Deprecated. 
 getValidators()should be used instead. | 
| String | getValidatorMessage()If there has been a call to  setValidatorMessage(java.lang.String)on this
 instance, return the message. | 
| Validator[] | getValidators() | 
| Object | getValue()If there is a local value, return it,
 otherwise return the result of calling  | 
| MethodBinding | getValueChangeListener()
 If  EditableValueHolder.setValueChangeListener(javax.faces.el.MethodBinding)was not previously called for this instance, this method
 must returnnull. | 
| ValueChangeListener[] | getValueChangeListeners()Return the set of registered  ValueChangeListeners for thisUIInputinstance. | 
| static boolean | isEmpty(Object value)Is the value denoting an empty value. | 
| boolean | isImmediate()
 Return the "immediate" state for this component. | 
| boolean | isLocalValueSet()Return the "local value set" state for this component. | 
| boolean | isRequired()Return the "required field" state for this component. | 
| boolean | isValid()
 Return a flag indicating whether the local value of this component is valid (no conversion
 error has occurred). | 
| void | markInitialState()
 In addition to the actions taken in  UIOutputwhenPartialStateHolder.markInitialState()is called,
 check if any of the installedValidators are PartialStateHolders and
 if so, callPartialStateHolder.markInitialState()as appropriate. | 
| void | processDecodes(FacesContext context)Specialized decode behavior on top of that provided by the
 superclass. | 
| void | processUpdates(FacesContext context)In addition to the standard  processUpdatesbehavior
 inherited fromUIComponentBase, callsupdateModel(). | 
| void | processValidators(FacesContext context)In addition to the standard
  processValidatorsbehavior
 inherited fromUIComponentBase, callsvalidate()if theimmediateproperty is false (which is the
 default);  if the component is invalid afterwards, callsFacesContext.renderResponse(). | 
| void | removeValidator(Validator validator) | 
| void | removeValueChangeListener(ValueChangeListener listener)Remove an existing  ValueChangeListener(if any) from the
 set of listeners interested in being notified whenValueChangeEvents occur. | 
| void | resetValue()Convenience method to reset
 this component's value to the
 un-initialized state. | 
| void | restoreState(FacesContext context,
            Object state)Perform any
 processing required to restore the state from the entries in the
 state Object. | 
| Object | saveState(FacesContext context) Gets the state of the instance as a
  SerializableObject. | 
| void | setConverterMessage(String message)Override any  ValueExpressionset for the "converterMessage"
 with the literal argument provided to this method. | 
| void | setImmediate(boolean immediate)
 Set the "immediate" state for this component. | 
| void | setLocalValueSet(boolean localValueSet)Sets the "local value set" state for this component. | 
| void | setRequired(boolean required)Set the "required field" state for this component. | 
| void | setRequiredMessage(String message)Override any  ValueExpressionset for the "requiredMessage"
 with the literal argument provided to this method. | 
| void | setSubmittedValue(Object submittedValue)Set the submittedValue value of this  UIInputcomponent. | 
| void | setValid(boolean valid)
 Set a flag indicating whether the local value of this component is valid (no conversion error
 has occurred). | 
| void | setValidator(MethodBinding validatorBinding)Deprecated. 
 Use  addValidator(javax.faces.validator.Validator)instead, obtaining the
             argumentValidatorby creating an instance ofMethodExpressionValidator. | 
| void | setValidatorMessage(String message)Override any  ValueExpressionset for the "validatorMessage"
 with the literal argument provided to this method. | 
| void | setValue(Object value)Set the value of this  UIComponent(if any). | 
| void | setValueChangeListener(MethodBinding valueChangeListener)Deprecated. 
 Use  addValueChangeListener(javax.faces.event.ValueChangeListener)instead, obtaining the
             argumentValueChangeListenerby creating an instance ofMethodExpressionValueChangeListener. | 
| void | updateModel(FacesContext context)Perform
 the following algorithm to update the model data
 associated with this  UIInput, if any, as appropriate. | 
| void | validate(FacesContext context)Perform the following algorithm to
 validate the local value of this  UIInput. | 
| protected void | validateValue(FacesContext context,
             Object newValue)Set the "valid"
 property according to the below algorithm. | 
getConverter, getLocalValue, setConverteraddClientBehavior, addFacesListener, broadcast, 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, processRestoreState, processSaveState, queueEvent, removeFacesListener, restoreAttachedState, saveAttachedState, setId, setParent, setRendered, setRendererType, setTransient, setValueBinding, subscribeToEvent, unsubscribeFromEventencodeAll, getClientId, getCompositeComponentParent, getContainerClientId, getCurrentComponent, getCurrentCompositeComponent, getNamingContainer, getPassThroughAttributes, getResourceBundleMap, getStateHelper, getStateHelper, getTransientStateHelper, getTransientStateHelper, getValueExpression, initialStateMarked, isCompositeComponent, isInView, isVisitable, popComponentFromEL, processEvent, pushComponentToEL, restoreTransientState, saveTransientState, setInView, setValueExpression, visitTreeclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitgetConverter, getLocalValue, setConverterpublic static final String COMPONENT_TYPE
The standard component type for this component.
public static final String COMPONENT_FAMILY
The standard component family for this component.
public static final String CONVERSION_MESSAGE_ID
The message identifier of the
 FacesMessage to be created if
 a conversion error occurs, and neither the page author nor
 the ConverterException provides a message.
public static final String REQUIRED_MESSAGE_ID
The message identifier of the
 FacesMessage to be created if
 a required check fails.
public static final String UPDATE_MESSAGE_ID
The message identifier of the
 FacesMessage to be created if
 a model update error occurs, and the thrown exception has
 no message.
public static final String VALIDATE_EMPTY_FIELDS_PARAM_NAME
The name of a context parameter
 that indicates how empty values should be handled with respect to
 validation.  See validateValue(javax.faces.context.FacesContext, java.lang.Object) for the allowable values
 and specification of how they should be interpreted.
public static final String EMPTY_STRING_AS_NULL_PARAM_NAME
The name of a context parameter that indicates how empty strings need to be interpreted.
public static final String ALWAYS_PERFORM_VALIDATION_WHEN_REQUIRED_IS_TRUE
If this param is set, and calling
 toLowerCase().equals("true") on a
 String representation of its value returns true, validation
 must be performed, even when there is no corresponding value for this
 component in the incoming request. See validate(javax.faces.context.FacesContext).
public UIInput()
Create a new UIInput instance with default property
 values.
public String getFamily()
UIComponent
 Return the identifier of the component family to which this component belongs. This
 identifier, in conjunction with the value of the rendererType
 property, may be used to select the appropriate Renderer for this component
 instance. Note this method should NOT return null
 
public Object getSubmittedValue()
Return the submittedValue value of this UIInput component.
 This method should only be used by the decode() and
 validate() method of this component, or
 its corresponding Renderer.
getSubmittedValue in interface EditableValueHolderpublic void setSubmittedValue(Object submittedValue)
Set the submittedValue value of this UIInput component.
 This method should only be used by the decode() and
 validate() method of this component, or
 its corresponding Renderer.
setSubmittedValue in interface EditableValueHoldersubmittedValue - The new submitted valuepublic Object getValue()
If there is a local value, return it,
 otherwise return the result of calling super.getVaue().
getValue in interface ValueHoldergetValue in class UIOutputpublic void setValue(Object value)
ValueHolderSet the value of this UIComponent (if any).
setValue in interface ValueHoldersetValue in class UIOutputvalue - The new local valuepublic void resetValue()
Convenience method to reset this component's value to the un-initialized state. This method does the following:
Call UIOutput.setValue(java.lang.Object).
Call setSubmittedValue(java.lang.Object) passing null.
Clear state for property localValueSet.
Clear state for property valid.
Upon return from this call if the instance had a
 ValueBinding associated with it for the "value"
 property, this binding is evaluated when UIOutput.getValue() is called.  Otherwise, null is
 returned from getValue().
resetValue in interface EditableValueHolderresetValue in class UIOutputpublic boolean isLocalValueSet()
setValue() automatically reset
 this property to true.isLocalValueSet in interface EditableValueHoldertrue if the local value is set, false otherwise.public void setLocalValueSet(boolean localValueSet)
setLocalValueSet in interface EditableValueHolderlocalValueSet - the "local value set" boolean.public boolean isRequired()
Return the "required field" state for this component.
isRequired in interface EditableValueHoldertrue if required, false otherwise.public String getRequiredMessage()
If there has been a call to setRequiredMessage(java.lang.String) on this
 instance, return the message.  Otherwise, call UIComponent.getValueExpression(java.lang.String)
 passing the key "requiredMessage", get the result of the expression, and return it.
 Any ELExceptions thrown during the call to getValue()
 must be wrapped in a FacesException and rethrown.
public void setRequiredMessage(String message)
Override any ValueExpression set for the "requiredMessage"
 with the literal argument provided to this method.  Subsequent calls
 to getRequiredMessage() will return this value;
message - the literal message value to be displayed in the event
                the user hasn't supplied a value and one is required.public String getConverterMessage()
If there has been a call to setConverterMessage(java.lang.String) on this
 instance, return the message.  Otherwise, call UIComponent.getValueExpression(java.lang.String)
 passing the key "converterMessage", get the result of the expression, and return it.
 Any ELExceptions thrown during the call to getValue()
 must be wrapped in a FacesException and rethrown.
public void setConverterMessage(String message)
Override any ValueExpression set for the "converterMessage"
 with the literal argument provided to this method.  Subsequent calls
 to getConverterMessage() will return this value;
message - the literal message value to be displayed in the event
                conversion fails.public String getValidatorMessage()
If there has been a call to setValidatorMessage(java.lang.String) on this
 instance, return the message.  Otherwise, call UIComponent.getValueExpression(java.lang.String)
 passing the key "validatorMessage", get the result of the expression, and return it.
 Any ELExceptions thrown during the call to getValue()
 must be wrapped in a FacesException and rethrown.
public void setValidatorMessage(String message)
Override any ValueExpression set for the "validatorMessage"
 with the literal argument provided to this method.  Subsequent calls
 to getValidatorMessage() will return this value;
message - the literal message value to be displayed in the event
                validation fails.public boolean isValid()
EditableValueHolderReturn a flag indicating whether the local value of this component is valid (no conversion error has occurred).
isValid in interface EditableValueHoldertrue if valid, false otherwise.public void setValid(boolean valid)
EditableValueHolderSet a flag indicating whether the local value of this component is valid (no conversion error has occurred).
setValid in interface EditableValueHoldervalid - The new valid flagpublic void setRequired(boolean required)
Set the "required field" state for this component.
setRequired in interface EditableValueHolderrequired - The new "required field" statepublic boolean isImmediate()
EditableValueHolderReturn the "immediate" state for this component.
isImmediate in interface EditableValueHoldertrue if is immediate, false otherwise.public void setImmediate(boolean immediate)
EditableValueHolder
 Set the "immediate" state for this component. When set to true, the component's value will be
 converted and validated immediately in the Apply Request Values phase, and
 ValueChangeEvents will be delivered in that phase as well. The default value for this
 property must be false.
 
setImmediate in interface EditableValueHolderimmediate - The new "immediate" statepublic MethodBinding getValidator()
getValidators() should be used instead.Return a MethodBinding pointing at a
 method that will be called during Process Validations
 phase of the request processing lifecycle, to validate the current
 value of this component.
getValidator in interface EditableValueHolderpublic void setValidator(MethodBinding validatorBinding)
addValidator(javax.faces.validator.Validator) instead, obtaining the
             argument Validator by creating an instance of MethodExpressionValidator.Set a MethodBinding pointing at a
 method that will be called during Process Validations
 phase of the request processing lifecycle, to validate the current
 value of this component.
Any method referenced by such an expression must be public, with
 a return type of void, and accept parameters of type
 FacesContext, UIComponent, and Object.
setValidator in interface EditableValueHoldervalidatorBinding - The new MethodBinding instancepublic MethodBinding getValueChangeListener()
EditableValueHolder
 If EditableValueHolder.setValueChangeListener(javax.faces.el.MethodBinding) was not previously called for this instance, this method
 must return null. If it was called, this method must return the exact
 MethodBinding instance that was passed to EditableValueHolder.setValueChangeListener(javax.faces.el.MethodBinding).
 
getValueChangeListener in interface EditableValueHolderpublic void setValueChangeListener(MethodBinding valueChangeListener)
addValueChangeListener(javax.faces.event.ValueChangeListener) instead, obtaining the
             argument ValueChangeListener by creating an instance of MethodExpressionValueChangeListener.
 Wrap the argument valueChangeMethod in an implementation of
 ValueChangeListener and store it in the internal data structure that backs the
 EditableValueHolder.getValueChangeListeners() method, taking care to over-write any instance that was
 stored by a previous call to setValueChangeListener.
 
 This argument method will be called during the Process Validations or Apply
 Request Values phases (depending on the value of the immediate property).
 
 Any method referenced by such an expression must be public, with a return type of
 void, and accept a parameter of type ValueChangeEvent.
 
setValueChangeListener in interface EditableValueHoldervalueChangeListener - the value change listener.public void markInitialState()
 In addition to the actions taken in UIOutput
 when PartialStateHolder.markInitialState() is called,
 check if any of the installed Validators are PartialStateHolders and
 if so, call PartialStateHolder.markInitialState()
 as appropriate.
 
markInitialState in interface PartialStateHoldermarkInitialState in class UIOutputpublic void clearInitialState()
UIComponentBase
 For each of the attached objects on this instance that implement PartialStateHolder,
 call PartialStateHolder.clearInitialState() on the attached object.
 
clearInitialState in interface PartialStateHolderclearInitialState in class UIOutputpublic void processDecodes(FacesContext context)
Specialized decode behavior on top of that provided by the
 superclass.  In addition to the standard
 processDecodes behavior inherited from UIComponentBase, calls validate() if the the
 immediate property is true; if the component is
 invalid afterwards or a RuntimeException is thrown,
 calls FacesContext.renderResponse().  
processDecodes in class UIComponentBasecontext - FacesContext for the request we are processingNullPointerException - if context is nullpublic void processValidators(FacesContext context)
In addition to the standard
 processValidators behavior
 inherited from UIComponentBase, calls validate()
 if the immediate property is false (which is the
 default);  if the component is invalid afterwards, calls
 FacesContext.renderResponse().
 To ensure the PostValidateEvent
 is published at the proper time, this component must be validated first,
 followed by the component's children and facets.
 If a RuntimeException is thrown during
 validation processing, calls FacesContext.renderResponse()
 and re-throw the exception.
 
processValidators in class UIComponentBasecontext - FacesContext for the request we are processingNullPointerException - if context is nullPreValidateEvent, 
PostValidateEventpublic void processUpdates(FacesContext context)
In addition to the standard processUpdates behavior
 inherited from UIComponentBase, calls
 updateModel().
 If the component is invalid afterwards, calls
 FacesContext.renderResponse().
 If a RuntimeException is thrown during
 update processing, calls FacesContext.renderResponse()
 and re-throw the exception.
 
processUpdates in class UIComponentBasecontext - FacesContext for the request we are processingNullPointerException - if context is nullpublic void decode(FacesContext context)
UIComponent
 Decode any new state of this UIComponent from the request contained in the
 specified FacesContext, and store this state as needed.
 
 During decoding, events may be enqueued for later processing (by event listeners
 who have registered an interest), by calling queueEvent().
 
decode in class UIComponentBasecontext - FacesContext for the request we are processingNullPointerException - if context is nullpublic void updateModel(FacesContext context)
Perform
 the following algorithm to update the model data
 associated with this UIInput, if any, as appropriate.
valid property of this component is
 false, take no further action.localValueSet property of this component is
 false, take no further action.ValueExpression for value exists,
 take no further action.setValue() method of the ValueExpression
 to update the value that the ValueExpression points at.setValue() method returns successfully:
 setValue() method throws an Exception:
 FacesMessage with the id UPDATE_MESSAGE_ID.  Create a
 UpdateModelException, passing the FacesMessage and
 the caught exception to the constructor.  Create an
 ExceptionQueuedEventContext, passing the FacesContext,
 the UpdateModelException, this component instance, and
 PhaseId.UPDATE_MODEL_VALUES to its constructor.  Call
 FacesContext.getExceptionHandler() and then call
 ExceptionHandler.processEvent(javax.faces.event.SystemEvent), passing the
 ExceptionQueuedEventContext.
 valid property of this UIInput
 to false.context - FacesContext for the request we are processingNullPointerException - if context
                              is nullpublic void validate(FacesContext context)
Perform the following algorithm to
 validate the local value of this UIInput.
getSubmittedValue().
 If this returns null, and
 the value of the ALWAYS_PERFORM_VALIDATION_WHEN_REQUIRED_IS_TRUE
 context-param is true (ignoring case), examine the value of the "required"
 property.  If the value of "required" is true, continue as below.  If
 the value of "required" is false or the required attribute is not set,
 exit without further processing.  If the context-param is not set, or is
 set to false (ignoring case), exit without further processing.
 (This indicates that no value was submitted for this
 component.)javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL
 context parameter value is true (ignoring case), and
 getSubmittedValue() returns a zero-length
 String call setSubmittedValue(java.lang.Object)null as the argument and continue processing
 using null as the current submitted
 value.getConvertedValue(javax.faces.context.FacesContext, java.lang.Object).addMessage() method on the
 FacesContext.valid property
 on this component to false validateValue(javax.faces.context.FacesContext, java.lang.Object).valid property of this component is still
 true, retrieve the previous value of the component
 (with getValue()), store the new local value using
 setValue(), and reset the submitted value to null
 with a call to setSubmittedValue(java.lang.Object)
 passing null as the argument.
 If the local value is different from the previous value of this
 component, as determined by a
 call to compareValues(java.lang.Object, java.lang.Object), fire a ValueChangeEvent to be broadcast to all interested
 listeners.Application components implementing UIInput that wish to
 perform validation with logic embedded in the component should perform
 their own correctness checks, and then call the
 super.validate() method to perform the standard
 processing described above.
context - The FacesContext for the current requestNullPointerException - if context
                              is nullprotected Object getConvertedValue(FacesContext context, Object newSubmittedValue) throws ConverterException
Convert the submitted value into a "local value" of the appropriate data type, if necessary. Employ the following algorithm to do so:
Renderer is present, call
 getConvertedValue() to convert the submitted
 value.Renderer is present, and the submitted
 value is a String, locate a Converter as follows:
 getConverter() returns a non-null Converter,
 use that instance.value exists,
 call getType() on it.
 null, assume the output
 type is String and perform no conversion.Application.createConverter(Class)
 to locate any registered Converter capable of
 converting data values of the specified type.Converter instance was located, call its
 getAsObject() method to perform the conversion.
 If conversion fails, the
 Converter will have thrown
 a ConverterException which is declared as a checked exception
 on this method, and thus must be handled by the caller.This method can be overridden by subclasses for more specific behavior.
context - the Faces context.newSubmittedValue - the new submitted value.ConverterExceptionprotected void validateValue(FacesContext context, Object newValue)
Set the "valid" property according to the below algorithm.
If the valid property on this component is
 still true, and the required property
 is also true, ensure that the local value is not
 empty (where "empty" is defined as null or a
 zero-length String).  If the local value is empty:
Enqueue an appropriate error message by calling the
 addMessage() method on the FacesContext
 instance for the current request.  If the getRequiredMessage() returns non-null, use the value
 as the summary and detail in the FacesMessage that is enqueued on the FacesContext,
 otherwise use the message for the REQUIRED_MESSAGE_ID.
valid property on this component
 to false.If calling ValidatorException.getFacesMessages() returns
 non-null, each message should be added to the
 FacesContext.  Otherwise the single message returned
 from ValidatorException.getFacesMessage() should be
 added.
Otherwise, if the
 valid property on this component is still
 true, take the following action to determine if
 validation of this component should proceed.
If the value is not empty, validation should proceed.
If the value is empty, but the system has been directed to
 validate empty fields, validation should proceed.  The
 implementation must obtain the init parameter Map
 from the ExternalContext and inspect the value for
 the key given by the value of the symbolic constant VALIDATE_EMPTY_FIELDS_PARAM_NAME.  If there is no value under
 that key, use the same key and look in the application map from
 the ExternalContext.  If the value is
 null or equal to the string
 “auto” (without the quotes) take
 appropriate action to determine if Bean Validation is present in
 the runtime environment.  If not, validation should not proceed.
 If so, validation should proceed.  If the value is equal
 (ignoring case) to “true” (without the
 quotes) validation should proceed.  Otherwise, validation should
 not proceed.
If the above determination indicates that validation should
 proceed, call the validate() method of each Validator registered for this UIInput, followed by the
 method pointed at by the validatorBinding property
 (if any).  If any of these validators or the method throws a
 ValidatorException, catch the exception, add its message
 (if any) to the FacesContext, and set the
 valid property of this component to false.
context - the Faces context.newValue - the new value.protected boolean compareValues(Object previous, Object value)
Return true if the new value is different from
 the previous value.  First compare the two values by passing
 value to the equals method on argument
 previous.  If that method returns true,
 return true.  If that method returns
 false, and both arguments implement
 java.lang.Comparable, compare the two values by
 passing value to the compareTo method on
 argument previous.  Return true if this
 method returns 0, false otherwise.
previous - old value of this component (if any)value - new value of this component (if any)true if the new value is different from the
  previous value, false otherwise.public static boolean isEmpty(Object value)
Is the value denoting an empty value.
If the value is null, return true. If the value is a String and it is the empty string, return true. If the value is an array and the array length is 0, return true. If the value is a List and the List is empty, return true. If the value is a Collection and the Collection is empty, return true. If the value is a Map and the Map is empty, return true. In all other cases, return false.
value - the value to check.public void addValidator(Validator validator)
addValidator in interface EditableValueHoldervalidator - The Validator to addNullPointerException - if validator
                              is nullpublic Validator[] getValidators()
Return the set of registered Validators for this
 UIInput instance.  If there are no registered validators,
 a zero-length array is returned.
getValidators in interface EditableValueHolderpublic void removeValidator(Validator validator)
Remove a Validator instance from the set associated with
 this UIInput, if it was previously associated.
 Otherwise, do nothing.
removeValidator in interface EditableValueHoldervalidator - The Validator to removepublic void addValueChangeListener(ValueChangeListener listener)
Add a new ValueChangeListener to the set of listeners
 interested in being notified when ValueChangeEvents occur.
addValueChangeListener in interface EditableValueHolderlistener - The ValueChangeListener to be addedNullPointerException - if listener
                              is nullpublic ValueChangeListener[] getValueChangeListeners()
Return the set of registered ValueChangeListeners for this
 UIInput instance.  If there are no registered listeners,
 a zero-length array is returned.
getValueChangeListeners in interface EditableValueHolderpublic void removeValueChangeListener(ValueChangeListener listener)
Remove an existing ValueChangeListener (if any) from the
 set of listeners interested in being notified when
 ValueChangeEvents occur.
removeValueChangeListener in interface EditableValueHolderlistener - The ValueChangeListener to be removedNullPointerException - if listener
                              is nullpublic Object saveState(FacesContext context)
StateHolder Gets the state of the instance as a
 Serializable Object.
If the class that implements this interface has references to
 instances that implement StateHolder (such as a
 UIComponent with event handlers, validators, etc.)
 this method must call the StateHolder.saveState(javax.faces.context.FacesContext) method on all those
 instances as well.  This method must not save the state
 of children and facets. That is done via the StateManager
This method must not alter the state of the implementing object. In other words, after executing this code:
 Object state = component.saveState(facesContext);
 component should be the same as before executing
 it.
The return from this method must be Serializable
saveState in interface StateHoldersaveState in class UIOutputcontext - the Faces context.public void restoreState(FacesContext context, Object state)
StateHolderPerform any processing required to restore the state from the entries in the state Object.
If the class that implements this interface has references to
 instances that also implement StateHolder (such as a
 UIComponent with event handlers, validators, etc.)
 this method must call the StateHolder.restoreState(javax.faces.context.FacesContext, java.lang.Object) method on all those
 instances as well. 
If the state
 argument is null, take no action and return.
restoreState in interface StateHolderrestoreState in class UIOutputcontext - the Faces context.state - the state.Copyright © 2019 Eclipse Foundation.
Use is subject to license terms.