Class UIInput
- java.lang.Object
-
- jakarta.faces.component.UIComponent
-
- jakarta.faces.component.UIComponentBase
-
- jakarta.faces.component.UIOutput
-
- jakarta.faces.component.UIInput
-
- All Implemented Interfaces:
EditableValueHolder,PartialStateHolder,StateHolder,TransientStateHolder,ValueHolder,ComponentSystemEventListener,FacesListener,SystemEventListenerHolder,EventListener
- Direct Known Subclasses:
HtmlInputFile,HtmlInputHidden,HtmlInputSecret,HtmlInputText,HtmlInputTextarea,UISelectBoolean,UISelectMany,UISelectOne,UIViewParameter
public class UIInput extends UIOutput implements EditableValueHolder
UIInput is a
UIComponentthat represents a component that both displays output to the user (likeUIOutputcomponents 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, individualRenderers 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 tonull.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 theimmediateproperty is set totrue, 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 thisUIInputdetects that a value change has actually occurred, and that all validations have been successfully passed, it will queue aValueChangeEvent. Later on, thebroadcast()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 theimmediateproperty is set totrue. If the validation fails, the implementation must callFacesContext.validationFailed().By default, the
rendererTypeproperty must be set to "Text". This value can be changed by calling thesetRendererType()method.
-
-
Field Summary
Fields Modifier and Type Field Description static StringALWAYS_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 StringCOMPONENT_FAMILYThe standard component family for this component.static StringCOMPONENT_TYPEThe standard component type for this component.static StringCONVERSION_MESSAGE_IDThe message identifier of theFacesMessageto be created if a conversion error occurs, and neither the page author nor theConverterExceptionprovides a message.static StringEMPTY_STRING_AS_NULL_PARAM_NAMEThe name of a context parameter that indicates how empty strings need to be interpreted.static StringREQUIRED_MESSAGE_IDThe message identifier of theFacesMessageto be created if a required check fails.static StringUPDATE_MESSAGE_IDThe message identifier of theFacesMessageto be created if a model update error occurs, and the thrown exception has no message.static StringVALIDATE_EMPTY_FIELDS_PARAM_NAMEThe name of a context parameter that indicates how empty values should be handled with respect to validation.-
Fields inherited from class jakarta.faces.component.UIComponent
ATTRS_WITH_DECLARED_DEFAULT_VALUES, BEANINFO_KEY, bindings, COMPOSITE_COMPONENT_TYPE_KEY, COMPOSITE_FACET_NAME, FACETS_KEY, VIEW_LOCATION_KEY
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddValidator(Validator validator)voidaddValueChangeListener(ValueChangeListener listener)Add a newValueChangeListenerto the set of listeners interested in being notified whenValueChangeEvents occur.voidclearInitialState()For each of the attached objects on this instance that implementPartialStateHolder, callPartialStateHolder.clearInitialState()on the attached object.protected booleancompareValues(Object previous, Object value)Returntrueif the new value is different from the previous value.voiddecode(FacesContext context)Decode any new state of thisUIComponentfrom the request contained in the specifiedFacesContext, and store this state as needed.protected ObjectgetConvertedValue(FacesContext context, Object newSubmittedValue)Convert the submitted value into a "local value" of the appropriate data type, if necessary.StringgetConverterMessage()If there has been a call tosetConverterMessage(java.lang.String)on this instance, return the message.StringgetFamily()Return the identifier of the component family to which this component belongs.StringgetRequiredMessage()If there has been a call tosetRequiredMessage(java.lang.String)on this instance, return the message.ObjectgetSubmittedValue()Return the submittedValue value of thisUIInputcomponent.StringgetValidatorMessage()If there has been a call tosetValidatorMessage(java.lang.String)on this instance, return the message.Validator[]getValidators()ObjectgetValue()If there is a local value, return it, otherwise return the result of callingsuper.getVaue().ValueChangeListener[]getValueChangeListeners()Return the set of registeredValueChangeListeners for thisUIInputinstance.static booleanisEmpty(Object value)Is the value denoting an empty value.booleanisImmediate()Return the "immediate" state for this component.booleanisLocalValueSet()Return the "local value set" state for this component.booleanisRequired()Return the "required field" state for this component.booleanisValid()Return a flag indicating whether the local value of this component is valid (no conversion error has occurred).voidmarkInitialState()In addition to the actions taken inUIOutputwhenPartialStateHolder.markInitialState()is called, check if any of the installedValidators are PartialStateHolders and if so, callPartialStateHolder.markInitialState()as appropriate.voidprocessDecodes(FacesContext context)Specialized decode behavior on top of that provided by the superclass.voidprocessUpdates(FacesContext context)In addition to the standardprocessUpdatesbehavior inherited fromUIComponentBase, callsupdateModel().voidprocessValidators(FacesContext context)In addition to the standardprocessValidatorsbehavior inherited fromUIComponentBase, callsvalidate()if theimmediateproperty is false (which is the default); if the component is invalid afterwards, callsFacesContext.renderResponse().voidremoveValidator(Validator validator)voidremoveValueChangeListener(ValueChangeListener listener)Remove an existingValueChangeListener(if any) from the set of listeners interested in being notified whenValueChangeEvents occur.voidresetValue()Convenience method to reset this component's value to the un-initialized state.voidrestoreState(FacesContext context, Object state)Perform any processing required to restore the state from the entries in the state Object.ObjectsaveState(FacesContext context)Gets the state of the instance as aSerializableObject.voidsetConverterMessage(String message)Override anyValueExpressionset for the "converterMessage" with the literal argument provided to this method.voidsetImmediate(boolean immediate)Set the "immediate" state for this component.voidsetLocalValueSet(boolean localValueSet)Sets the "local value set" state for this component.voidsetRequired(boolean required)Set the "required field" state for this component.voidsetRequiredMessage(String message)Override anyValueExpressionset for the "requiredMessage" with the literal argument provided to this method.voidsetSubmittedValue(Object submittedValue)Set the submittedValue value of thisUIInputcomponent.voidsetValid(boolean valid)Set a flag indicating whether the local value of this component is valid (no conversion error has occurred).voidsetValidatorMessage(String message)Override anyValueExpressionset for the "validatorMessage" with the literal argument provided to this method.voidsetValue(Object value)Set the value of thisUIComponent(if any).voidupdateModel(FacesContext context)Perform the following algorithm to update the model data associated with thisUIInput, if any, as appropriate.voidvalidate(FacesContext context)Perform the following algorithm to validate the local value of thisUIInput.protected voidvalidateValue(FacesContext context, Object newValue)Set the "valid" property according to the below algorithm.-
Methods inherited from class jakarta.faces.component.UIOutput
getConverter, getLocalValue, setConverter
-
Methods inherited from class jakarta.faces.component.UIComponentBase
addClientBehavior, 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, invokeOnComponent, isRendered, isTransient, processRestoreState, processSaveState, queueEvent, removeFacesListener, restoreAttachedState, saveAttachedState, setId, setParent, setRendered, setRendererType, setTransient, subscribeToEvent, unsubscribeFromEvent
-
Methods inherited from class jakarta.faces.component.UIComponent
encodeAll, getClientId, getCompositeComponentParent, getContainerClientId, getCurrentComponent, getCurrentCompositeComponent, getNamingContainer, getPassThroughAttributes, getResourceBundleMap, getStateHelper, getStateHelper, getTransientStateHelper, getTransientStateHelper, getValueExpression, initialStateMarked, isCompositeComponent, isInView, isVisitable, popComponentFromEL, processEvent, pushComponentToEL, restoreTransientState, saveTransientState, setInView, setValueExpression, visitTree
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface jakarta.faces.component.ValueHolder
getConverter, getLocalValue, setConverter
-
-
-
-
Field Detail
-
COMPONENT_TYPE
public static final String COMPONENT_TYPE
The standard component type for this component.
- See Also:
- Constant Field Values
-
COMPONENT_FAMILY
public static final String COMPONENT_FAMILY
The standard component family for this component.
- See Also:
- Constant Field Values
-
CONVERSION_MESSAGE_ID
public static final String CONVERSION_MESSAGE_ID
The message identifier of the
FacesMessageto be created if a conversion error occurs, and neither the page author nor theConverterExceptionprovides a message.- See Also:
- Constant Field Values
-
REQUIRED_MESSAGE_ID
public static final String REQUIRED_MESSAGE_ID
The message identifier of the
FacesMessageto be created if a required check fails.- See Also:
- Constant Field Values
-
UPDATE_MESSAGE_ID
public static final String UPDATE_MESSAGE_ID
The message identifier of the
FacesMessageto be created if a model update error occurs, and the thrown exception has no message.- See Also:
- Constant Field Values
-
VALIDATE_EMPTY_FIELDS_PARAM_NAME
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(jakarta.faces.context.FacesContext, java.lang.Object)for the allowable values and specification of how they should be interpreted.- See Also:
- Constant Field Values
-
EMPTY_STRING_AS_NULL_PARAM_NAME
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.
- See Also:
- Constant Field Values
-
ALWAYS_PERFORM_VALIDATION_WHEN_REQUIRED_IS_TRUE
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(jakarta.faces.context.FacesContext).- See Also:
- Constant Field Values
-
-
Constructor Detail
-
UIInput
public UIInput()
Create a new
UIInputinstance with default property values.
-
-
Method Detail
-
getFamily
public String getFamily()
Description copied from class:UIComponentReturn the identifier of the component family to which this component belongs. This identifier, in conjunction with the value of the
rendererTypeproperty, may be used to select the appropriateRendererfor this component instance. Note this method should NOT returnnull
-
getSubmittedValue
public Object getSubmittedValue()
Return the submittedValue value of this
UIInputcomponent. This method should only be used by thedecode()andvalidate()method of this component, or its correspondingRenderer.- Specified by:
getSubmittedValuein interfaceEditableValueHolder- Returns:
- the submitted value.
-
setSubmittedValue
public void setSubmittedValue(Object submittedValue)
Set the submittedValue value of this
UIInputcomponent. This method should only be used by thedecode()andvalidate()method of this component, or its correspondingRenderer.- Specified by:
setSubmittedValuein interfaceEditableValueHolder- Parameters:
submittedValue- The new submitted value
-
getValue
public Object getValue()
If there is a local value, return it, otherwise return the result of calling
super.getVaue().- Specified by:
getValuein interfaceValueHolder- Overrides:
getValuein classUIOutput- Returns:
- the value.
- Since:
- 2.2
-
setValue
public void setValue(Object value)
Description copied from interface:ValueHolderSet the value of this
UIComponent(if any).- Specified by:
setValuein interfaceValueHolder- Overrides:
setValuein classUIOutput- Parameters:
value- The new local value
-
resetValue
public 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)passingnull.Clear state for property
localValueSet.Clear state for property
valid.Upon return from this call if the instance had a
ValueBindingassociated with it for the "value" property, this binding is evaluated whenUIOutput.getValue()is called. Otherwise,nullis returned fromgetValue().- Specified by:
resetValuein interfaceEditableValueHolder- Overrides:
resetValuein classUIOutput
-
isLocalValueSet
public boolean isLocalValueSet()
Return the "local value set" state for this component. Calls tosetValue()automatically reset this property totrue.- Specified by:
isLocalValueSetin interfaceEditableValueHolder- Returns:
trueif the local value is set,falseotherwise.
-
setLocalValueSet
public void setLocalValueSet(boolean localValueSet)
Sets the "local value set" state for this component.- Specified by:
setLocalValueSetin interfaceEditableValueHolder- Parameters:
localValueSet- the "local value set" boolean.
-
isRequired
public boolean isRequired()
Return the "required field" state for this component.
- Specified by:
isRequiredin interfaceEditableValueHolder- Returns:
trueif required,falseotherwise.
-
getRequiredMessage
public String getRequiredMessage()
If there has been a call to
setRequiredMessage(java.lang.String)on this instance, return the message. Otherwise, callUIComponent.getValueExpression(java.lang.String)passing the key "requiredMessage", get the result of the expression, and return it. AnyELExceptions thrown during the call togetValue()must be wrapped in aFacesExceptionand rethrown.- Returns:
- the required message.
-
setRequiredMessage
public void setRequiredMessage(String message)
Override any
ValueExpressionset for the "requiredMessage" with the literal argument provided to this method. Subsequent calls togetRequiredMessage()will return this value;- Parameters:
message- the literal message value to be displayed in the event the user hasn't supplied a value and one is required.
-
getConverterMessage
public String getConverterMessage()
If there has been a call to
setConverterMessage(java.lang.String)on this instance, return the message. Otherwise, callUIComponent.getValueExpression(java.lang.String)passing the key "converterMessage", get the result of the expression, and return it. AnyELExceptions thrown during the call togetValue()must be wrapped in aFacesExceptionand rethrown.- Returns:
- the converter message.
-
setConverterMessage
public void setConverterMessage(String message)
Override any
ValueExpressionset for the "converterMessage" with the literal argument provided to this method. Subsequent calls togetConverterMessage()will return this value;- Parameters:
message- the literal message value to be displayed in the event conversion fails.
-
getValidatorMessage
public String getValidatorMessage()
If there has been a call to
setValidatorMessage(java.lang.String)on this instance, return the message. Otherwise, callUIComponent.getValueExpression(java.lang.String)passing the key "validatorMessage", get the result of the expression, and return it. AnyELExceptions thrown during the call togetValue()must be wrapped in aFacesExceptionand rethrown.- Returns:
- the validator message.
-
setValidatorMessage
public void setValidatorMessage(String message)
Override any
ValueExpressionset for the "validatorMessage" with the literal argument provided to this method. Subsequent calls togetValidatorMessage()will return this value;- Parameters:
message- the literal message value to be displayed in the event validation fails.
-
isValid
public boolean isValid()
Description copied from interface:EditableValueHolderReturn a flag indicating whether the local value of this component is valid (no conversion error has occurred).
- Specified by:
isValidin interfaceEditableValueHolder- Returns:
trueif valid,falseotherwise.
-
setValid
public void setValid(boolean valid)
Description copied from interface:EditableValueHolderSet a flag indicating whether the local value of this component is valid (no conversion error has occurred).
- Specified by:
setValidin interfaceEditableValueHolder- Parameters:
valid- The new valid flag
-
setRequired
public void setRequired(boolean required)
Set the "required field" state for this component.
- Specified by:
setRequiredin interfaceEditableValueHolder- Parameters:
required- The new "required field" state
-
isImmediate
public boolean isImmediate()
Description copied from interface:EditableValueHolderReturn the "immediate" state for this component.
- Specified by:
isImmediatein interfaceEditableValueHolder- Returns:
trueif is immediate,falseotherwise.
-
setImmediate
public void setImmediate(boolean immediate)
Description copied from interface:EditableValueHolderSet 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 befalse.- Specified by:
setImmediatein interfaceEditableValueHolder- Parameters:
immediate- The new "immediate" state
-
markInitialState
public 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.- Specified by:
markInitialStatein interfacePartialStateHolder- Overrides:
markInitialStatein classUIOutput
-
clearInitialState
public void clearInitialState()
Description copied from class:UIComponentBaseFor each of the attached objects on this instance that implement
PartialStateHolder, callPartialStateHolder.clearInitialState()on the attached object.- Specified by:
clearInitialStatein interfacePartialStateHolder- Overrides:
clearInitialStatein classUIOutput
-
processDecodes
public void processDecodes(FacesContext context)
Specialized decode behavior on top of that provided by the superclass. In addition to the standard
processDecodesbehavior inherited fromUIComponentBase, callsvalidate()if the theimmediateproperty is true; if the component is invalid afterwards or aRuntimeExceptionis thrown, callsFacesContext.renderResponse().- Overrides:
processDecodesin classUIComponentBase- Parameters:
context-FacesContextfor the request we are processing- Throws:
NullPointerException- ifcontextisnull
-
processValidators
public 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(). To ensure thePostValidateEventis published at the proper time, this component must be validated first, followed by the component's children and facets. If aRuntimeExceptionis thrown during validation processing, callsFacesContext.renderResponse()and re-throw the exception.- Overrides:
processValidatorsin classUIComponentBase- Parameters:
context-FacesContextfor the request we are processing- Throws:
NullPointerException- ifcontextisnull- See Also:
PreValidateEvent,PostValidateEvent
-
processUpdates
public void processUpdates(FacesContext context)
In addition to the standard
processUpdatesbehavior inherited fromUIComponentBase, callsupdateModel(). If the component is invalid afterwards, callsFacesContext.renderResponse(). If aRuntimeExceptionis thrown during update processing, callsFacesContext.renderResponse()and re-throw the exception.- Overrides:
processUpdatesin classUIComponentBase- Parameters:
context-FacesContextfor the request we are processing- Throws:
NullPointerException- ifcontextisnull
-
decode
public void decode(FacesContext context)
Description copied from class:UIComponentDecode any new state of this
UIComponentfrom the request contained in the specifiedFacesContext, 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().- Overrides:
decodein classUIComponentBase- Parameters:
context-FacesContextfor the request we are processing- Throws:
NullPointerException- ifcontextisnull
-
updateModel
public void updateModel(FacesContext context)
Perform the following algorithm to update the model data associated with this
UIInput, if any, as appropriate.- If the
validproperty of this component isfalse, take no further action. - If the
localValueSetproperty of this component isfalse, take no further action. - If no
ValueExpressionforvalueexists, take no further action. - Call
setValue()method of theValueExpressionto update the value that theValueExpressionpoints at. - If the
setValue()method returns successfully: - If the
setValue()method throws an Exception:- Enqueue an error message. Create a
FacesMessagewith the idUPDATE_MESSAGE_ID. Create aUpdateModelException, passing theFacesMessageand the caught exception to the constructor. Create anExceptionQueuedEventContext, passing theFacesContext, theUpdateModelException, this component instance, andPhaseId.UPDATE_MODEL_VALUESto its constructor. CallFacesContext.getExceptionHandler()and then callExceptionHandler.processEvent(jakarta.faces.event.SystemEvent), passing theExceptionQueuedEventContext. - Set the
validproperty of thisUIInputtofalse.
- Enqueue an error message. Create a
- Parameters:
context-FacesContextfor the request we are processing- Throws:
NullPointerException- ifcontextisnull
- If the
-
validate
public void validate(FacesContext context)
Perform the following algorithm to validate the local value of this
UIInput.- Retrieve the submitted value with
getSubmittedValue(). If this returnsnull, and the value of theALWAYS_PERFORM_VALIDATION_WHEN_REQUIRED_IS_TRUEcontext-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.) - If the
jakarta.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULLcontext parameter value istrue(ignoring case), andgetSubmittedValue()returns a zero-lengthStringcall, passingsetSubmittedValue(java.lang.Object)nullas the argument and continue processing usingnullas the current submitted value. - Convert the submitted value into a "local value" of the appropriate data type by calling
getConvertedValue(jakarta.faces.context.FacesContext, java.lang.Object). - If conversion fails:
- Enqueue an appropriate error message by calling the
addMessage()method on theFacesContext. - Set the
validproperty on this component tofalse
- Enqueue an appropriate error message by calling the
- Validate the property by calling
validateValue(jakarta.faces.context.FacesContext, java.lang.Object). - If the
validproperty of this component is stilltrue, retrieve the previous value of the component (withgetValue()), store the new local value usingsetValue(), and reset the submitted value to null with a call tosetSubmittedValue(java.lang.Object)passingnullas the argument. If the local value is different from the previous value of this component, as determined by a call tocompareValues(java.lang.Object, java.lang.Object), fire aValueChangeEventto be broadcast to all interested listeners.
Application components implementing
UIInputthat wish to perform validation with logic embedded in the component should perform their own correctness checks, and then call thesuper.validate()method to perform the standard processing described above.- Parameters:
context- TheFacesContextfor the current request- Throws:
NullPointerException- ifcontextis null
- Retrieve the submitted value with
-
getConvertedValue
protected 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:
- If a
Rendereris present, callgetConvertedValue()to convert the submitted value. - If no
Rendereris present, and the submitted value is a String, locate aConverteras follows:- If
getConverter()returns a non-nullConverter, use that instance. - Otherwise, if a value binding for
valueexists, callgetType()on it.- If this call returns
null, assume the output type isStringand perform no conversion. - Otherwise, call
Application.createConverter(Class)to locate any registeredConvertercapable of converting data values of the specified type.
- If this call returns
- If
- If a
Converterinstance was located, call itsgetAsObject()method to perform the conversion. If conversion fails, theConverterwill have thrown aConverterExceptionwhich is declared as a checked exception on this method, and thus must be handled by the caller. - Otherwise, use the submitted value without any conversion
This method can be overridden by subclasses for more specific behavior.
- Parameters:
context- the Faces context.newSubmittedValue- the new submitted value.- Returns:
- the converted value.
- Throws:
ConverterException
- If a
-
validateValue
protected void validateValue(FacesContext context, Object newValue)
Set the "valid" property according to the below algorithm.
-
If the
validproperty on this component is stilltrue, and therequiredproperty is alsotrue, ensure that the local value is not empty (where "empty" is defined asnullor a zero-length String). If the local value is empty:-
Enqueue an appropriate error message by calling the
addMessage()method on theFacesContextinstance for the current request. If thegetRequiredMessage()returns non-null, use the value as thesummaryanddetailin theFacesMessagethat is enqueued on theFacesContext, otherwise use the message for theREQUIRED_MESSAGE_ID. - Set the
validproperty on this component tofalse. -
If calling
ValidatorException.getFacesMessages()returns non-null, each message should be added to theFacesContext. Otherwise the single message returned fromValidatorException.getFacesMessage()should be added.
-
-
Otherwise, if the
validproperty on this component is stilltrue, 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
Mapfrom theExternalContextand inspect the value for the key given by the value of the symbolic constantVALIDATE_EMPTY_FIELDS_PARAM_NAME. If there is no value under that key, use the same key and look in the application map from theExternalContext. If the value isnullor 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 eachValidatorregistered for thisUIInput, followed by the method pointed at by thevalidatorBindingproperty (if any). If any of these validators or the method throws aValidatorException, catch the exception, add its message (if any) to theFacesContext, and set thevalidproperty of this component to false. -
- Parameters:
context- the Faces context.newValue- the new value.
-
-
compareValues
protected boolean compareValues(Object previous, Object value)
Return
trueif the new value is different from the previous value. First compare the two values by passing value to theequalsmethod on argument previous. If that method returnstrue, returntrue. If that method returnsfalse, and both arguments implementjava.lang.Comparable, compare the two values by passing value to thecompareTomethod on argument previous. Returntrueif this method returns0,falseotherwise.- Parameters:
previous- old value of this component (if any)value- new value of this component (if any)- Returns:
trueif the new value is different from the previous value,falseotherwise.
-
isEmpty
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.
- Parameters:
value- the value to check.- Returns:
- true if it is, false otherwise.
-
addValidator
public void addValidator(Validator validator)
- Specified by:
addValidatorin interfaceEditableValueHolder- Parameters:
validator- TheValidatorto add- Throws:
NullPointerException- ifvalidatoris null
-
getValidators
public Validator[] getValidators()
Return the set of registered
Validators for thisUIInputinstance. If there are no registered validators, a zero-length array is returned.- Specified by:
getValidatorsin interfaceEditableValueHolder- Returns:
- the validators, or a zero-length array.
-
removeValidator
public void removeValidator(Validator validator)
Remove a
Validatorinstance from the set associated with thisUIInput, if it was previously associated. Otherwise, do nothing.- Specified by:
removeValidatorin interfaceEditableValueHolder- Parameters:
validator- TheValidatorto remove
-
addValueChangeListener
public void addValueChangeListener(ValueChangeListener listener)
Add a new
ValueChangeListenerto the set of listeners interested in being notified whenValueChangeEvents occur.- Specified by:
addValueChangeListenerin interfaceEditableValueHolder- Parameters:
listener- TheValueChangeListenerto be added- Throws:
NullPointerException- iflistenerisnull
-
getValueChangeListeners
public ValueChangeListener[] getValueChangeListeners()
Return the set of registered
ValueChangeListeners for thisUIInputinstance. If there are no registered listeners, a zero-length array is returned.- Specified by:
getValueChangeListenersin interfaceEditableValueHolder- Returns:
- the value change listeners, or a zero-length array.
-
removeValueChangeListener
public void removeValueChangeListener(ValueChangeListener listener)
Remove an existing
ValueChangeListener(if any) from the set of listeners interested in being notified whenValueChangeEvents occur.- Specified by:
removeValueChangeListenerin interfaceEditableValueHolder- Parameters:
listener- TheValueChangeListenerto be removed- Throws:
NullPointerException- iflistenerisnull
-
saveState
public Object saveState(FacesContext context)
Description copied from interface:StateHolderGets the state of the instance as a
SerializableObject.If the class that implements this interface has references to instances that implement StateHolder (such as a
UIComponentwith event handlers, validators, etc.) this method must call theStateHolder.saveState(jakarta.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 theStateManagerThis method must not alter the state of the implementing object. In other words, after executing this code:
Object state = component.saveState(facesContext);componentshould be the same as before executing it.The return from this method must be
Serializable- Specified by:
saveStatein interfaceStateHolder- Overrides:
saveStatein classUIOutput- Parameters:
context- the Faces context.- Returns:
- the saved state.
-
restoreState
public void restoreState(FacesContext context, Object state)
Description copied from interface: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
UIComponentwith event handlers, validators, etc.) this method must call theStateHolder.restoreState(jakarta.faces.context.FacesContext, java.lang.Object)method on all those instances as well.If the
stateargument isnull, take no action and return.- Specified by:
restoreStatein interfaceStateHolder- Overrides:
restoreStatein classUIOutput- Parameters:
context- the Faces context.state- the state.
-
-