public abstract class AbstractNumberField<C extends AbstractNumberField<C,T>,T extends Number> extends GeneratedVaadinNumberField<C,T> implements HasSize, HasValidation, HasValueChangeMode, HasPrefixAndSuffix, InputNotifier, KeyNotifier, CompositionNotifier, HasAutocomplete, HasAutocapitalize, HasAutocorrect, HasHelper, HasLabel, HasValidator<T>, HasClientValidation
vaadin-number-field
element and its subclasses.GeneratedVaadinTextField.ChangeEvent<R extends GeneratedVaadinTextField<R,?>>, GeneratedVaadinTextField.InvalidChangeEvent<R extends GeneratedVaadinTextField<R,?>>AbstractField.ComponentValueChangeEvent<C extends Component,V>HasClientValidation.ClientValidatedEventBlurNotifier.BlurEvent<C extends Component>FocusNotifier.FocusEvent<C extends Component>HasValue.ValueChangeEvent<V>, HasValue.ValueChangeListener<E extends HasValue.ValueChangeEvent<?>>DEFAULT_CHANGE_TIMEOUTAUTOCOMPLETE_ATTRIBUTEAUTOCAPITALIZE_ATTRIBUTEAUTOCORRECT_ATTRIBUTE| Constructor and Description |
|---|
AbstractNumberField(SerializableFunction<String,T> parser,
SerializableFunction<T,String> formatter,
double absoluteMin,
double absoluteMax)
Sets up the common logic for number fields.
|
| Modifier and Type | Method and Description |
|---|---|
Registration |
addValidationStatusChangeListener(ValidationStatusChangeListener<T> listener)
Enables the implementing components to notify changes in their validation
status to the observers.
|
Validator<T> |
getDefaultValidator()
Returns a validator that checks the state of the Value.
|
T |
getEmptyValue()
Returns the value that represents an empty value.
|
String |
getErrorMessage()
Gets current error message from the component.
|
String |
getLabel()
String used for the label element.
|
protected double |
getMaxDouble()
Description copied from corresponding location in WebComponent:
|
protected double |
getMinDouble()
Description copied from corresponding location in WebComponent:
|
String |
getPlaceholder()
A hint to the user of what can be entered in the component.
|
protected double |
getStepDouble()
Description copied from corresponding location in WebComponent:
|
String |
getTitle()
The text usually displayed in a tooltip popup when the mouse is over the
field.
|
T |
getValue()
Returns the current value of the number field.
|
ValueChangeMode |
getValueChangeMode()
Gets current value change mode of the component.
|
int |
getValueChangeTimeout()
Returns the currently set timeout, for how often
HasValue.ValueChangeEvents are triggered when the ValueChangeMode is set
to ValueChangeMode.LAZY, or ValueChangeMode.TIMEOUT. |
boolean |
hasControls()
Gets whether the control buttons for increasing/decreasing the value are
visible.
|
boolean |
isAutofocus()
Specify that this control should have input focus when the page loads.
|
boolean |
isAutoselect()
Specifies if the field value gets automatically selected when the field
gains focus.
|
boolean |
isClearButtonVisible()
Gets the visibility state of the button which clears the number field.
|
protected boolean |
isEnforcedFieldValidationEnabled()
Whether the full experience validation is enforced for the component.
|
boolean |
isInvalid()
Returns
true if component input is invalid, false
otherwise. |
protected void |
onAttach(AttachEvent attachEvent)
Called when the component is attached to a UI.
|
void |
setAutofocus(boolean autofocus)
Description copied from corresponding location in WebComponent:
|
void |
setAutoselect(boolean autoselect)
Set to
true to always have the field value automatically
selected when the field gains focus, false otherwise. |
void |
setClearButtonVisible(boolean clearButtonVisible)
Set to
false to hide the clear button which clears the
number field. |
void |
setErrorMessage(String errorMessage)
Description copied from corresponding location in WebComponent:
|
void |
setHasControls(boolean hasControls)
Sets the visibility of the control buttons for increasing/decreasing the
value accordingly to the default or specified step.
|
void |
setInvalid(boolean invalid)
Description copied from corresponding location in WebComponent:
|
void |
setLabel(String label)
Sets the label for this component.
|
protected void |
setMax(double max)
Description copied from corresponding location in WebComponent:
|
protected void |
setMin(double min)
Description copied from corresponding location in WebComponent:
|
void |
setPlaceholder(String placeholder)
Description copied from corresponding location in WebComponent:
|
void |
setRequiredIndicatorVisible(boolean requiredIndicatorVisible)
Sets the required indicator visible or not.
|
protected void |
setStep(double step)
Description copied from corresponding location in WebComponent:
|
void |
setTitle(String title)
Description copied from corresponding location in WebComponent:
|
void |
setValue(T value)
Sets the value of this number field.
|
void |
setValueChangeMode(ValueChangeMode valueChangeMode)
Sets new value change mode for the component.
|
void |
setValueChangeTimeout(int valueChangeTimeout)
Sets how often
HasValue.ValueChangeEvents are triggered when the
ValueChangeMode is set to ValueChangeMode.LAZY, or
ValueChangeMode.TIMEOUT. |
protected void |
validate()
Performs server-side validation of the current value.
|
checkValidity, hasControlsBooleanaddChangeListener, addInvalidChangeListener, addThemeVariants, addToInput, addToPrefix, addToSuffix, getAutocapitalizeString, getAutocompleteString, getAutocorrectString, getErrorMessageString, getLabelString, getListString, getMaxlengthDouble, getMinlengthDouble, getNameString, getPatternString, getPlaceholderString, getTitleString, isAutofocusBoolean, isAutoselectBoolean, isClearButtonVisibleBoolean, isDisabledBoolean, isInvalidBoolean, isPreventInvalidInputBoolean, isReadonlyBoolean, isRequiredBoolean, remove, removeAll, removeThemeVariants, setAutocapitalize, setAutocomplete, setAutocorrect, setDisabled, setList, setMaxlength, setMinlength, setName, setPattern, setPreventInvalidInput, setReadonly, setRequiredgetSynchronizationRegistration, hasValidValue, setPresentationValue, setSynchronizedEventaddValueChangeListener, isEmpty, setModelValue, valueEqualsaddListener, fireEvent, from, get, getChildren, getElement, getEventBus, getId, getLocale, getParent, getTranslation, getTranslation, getTranslation, getTranslation, getUI, hasListener, isAttached, isTemplateMapped, isVisible, onDetach, onEnabledStateChanged, set, setElement, setId, setVisibleclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitgetCssSize, getHeight, getHeightUnit, getMaxHeight, getMaxWidth, getMinHeight, getMinWidth, getWidth, getWidthUnit, setHeight, setHeight, setHeightFull, setMaxHeight, setMaxHeight, setMaxWidth, setMaxWidth, setMinHeight, setMinHeight, setMinWidth, setMinWidth, setSizeFull, setSizeUndefined, setWidth, setWidth, setWidthFullgetPrefixComponent, getSuffixComponent, setPrefixComponent, setSuffixComponentaddInputListeneraddKeyDownListener, addKeyDownListener, addKeyPressListener, addKeyPressListener, addKeyUpListener, addKeyUpListeneraddCompositionEndListener, addCompositionStartListener, addCompositionUpdateListenergetAutocomplete, setAutocompletegetAutocapitalize, setAutocapitalizeisAutocorrect, setAutocorrectgetHelperComponent, getHelperText, setHelperComponent, setHelperTextgetElementaddClientValidatedEventListeneraddClassName, addClassNames, getClassName, getClassNames, getStyle, hasClassName, removeClassName, removeClassNames, setClassName, setClassNameaddFocusShortcut, blur, focus, getTabIndex, setTabIndexaddBlurListeneraddFocusListenerisEnabled, setEnabledaddThemeName, addThemeNames, getThemeName, getThemeNames, hasThemeName, removeThemeName, removeThemeNames, setThemeName, setThemeNameisReadOnly, isRequiredIndicatorVisible, setReadOnlyclear, getOptionalValueaddAttachListeneraddDetachListenerpublic AbstractNumberField(SerializableFunction<String,T> parser, SerializableFunction<T,String> formatter, double absoluteMin, double absoluteMax)
parser - function to parse the client-side value string into
server-side valueformatter - function to format the server-side value into client-side
value stringabsoluteMin - the smallest possible value of the number type of the field,
will be used as the default min value at server-sideabsoluteMax - the largest possible value of the number type of the field,
will be used as the default max value at server-sidepublic ValueChangeMode getValueChangeMode()
The default value is ValueChangeMode.ON_CHANGE.
getValueChangeMode in interface HasValueChangeModenull if
the value is not synchronizedpublic void setValueChangeMode(ValueChangeMode valueChangeMode)
HasValueChangeModesetValueChangeMode in interface HasValueChangeModevalueChangeMode - new value change mode, or null to disable the value
synchronizationpublic void setValueChangeTimeout(int valueChangeTimeout)
HasValueChangeModeHasValue.ValueChangeEvents are triggered when the
ValueChangeMode is set to ValueChangeMode.LAZY, or
ValueChangeMode.TIMEOUT.
Implementations should use
ValueChangeMode.applyChangeTimeout(ValueChangeMode, int, DomListenerRegistration).
setValueChangeTimeout in interface HasValueChangeModevalueChangeTimeout - the timeout in milliseconds of how often
HasValue.ValueChangeEvents are triggered.public int getValueChangeTimeout()
HasValueChangeModeHasValue.ValueChangeEvents are triggered when the ValueChangeMode is set
to ValueChangeMode.LAZY, or ValueChangeMode.TIMEOUT.getValueChangeTimeout in interface HasValueChangeModeHasValue.ValueChangeEvents are triggered.public String getErrorMessage()
HasValidationgetErrorMessage in interface HasValidationpublic void setErrorMessage(String errorMessage)
GeneratedVaadinTextFieldDescription copied from corresponding location in WebComponent:
Error to show when the input value is invalid.
setErrorMessage in interface HasValidationsetErrorMessage in class GeneratedVaadinTextField<C extends AbstractNumberField<C,T>,T extends Number>errorMessage - the String value to setpublic void setLabel(String label)
setLabel in interface HasLabelsetLabel in class GeneratedVaadinTextField<C extends AbstractNumberField<C,T>,T extends Number>label - value for the label property in the webcomponentpublic String getLabel()
public void setPlaceholder(String placeholder)
GeneratedVaadinTextFieldDescription copied from corresponding location in WebComponent:
A hint to the user of what can be entered in the control.
setPlaceholder in class GeneratedVaadinTextField<C extends AbstractNumberField<C,T>,T extends Number>placeholder - the String value to setpublic void setHasControls(boolean hasControls)
setHasControls in class GeneratedVaadinNumberField<C extends AbstractNumberField<C,T>,T extends Number>hasControls - true if control buttons should be visible;
false if those should be hiddensetStep(double)public boolean hasControls()
true if buttons are visible, false otherwisesetStep(double)public String getPlaceholder()
placeholder property from the webcomponentpublic void setAutofocus(boolean autofocus)
GeneratedVaadinTextFieldDescription copied from corresponding location in WebComponent:
Specify that this control should have input focus when the page loads.
setAutofocus in class GeneratedVaadinTextField<C extends AbstractNumberField<C,T>,T extends Number>autofocus - the boolean value to setpublic boolean isAutofocus()
autofocus property from the webcomponentpublic String getTitle()
title property from the webcomponentpublic void setTitle(String title)
GeneratedVaadinTextFieldDescription copied from corresponding location in WebComponent:
The text usually displayed in a tooltip popup when the mouse is over the field.
setTitle in class GeneratedVaadinTextField<C extends AbstractNumberField<C,T>,T extends Number>title - the String value to setpublic boolean isAutoselect()
true if autoselect is active, false
otherwisepublic void setAutoselect(boolean autoselect)
true to always have the field value automatically
selected when the field gains focus, false otherwise.setAutoselect in class GeneratedVaadinTextField<C extends AbstractNumberField<C,T>,T extends Number>autoselect - true to set auto select on, false
otherwisepublic boolean isClearButtonVisible()
true if the button is visible, false
otherwisepublic void setClearButtonVisible(boolean clearButtonVisible)
false to hide the clear button which clears the
number field.setClearButtonVisible in class GeneratedVaadinTextField<C extends AbstractNumberField<C,T>,T extends Number>clearButtonVisible - true to set the button visible,
false otherwisepublic T getEmptyValue()
getEmptyValue in interface HasValue<AbstractField.ComponentValueChangeEvent<C extends AbstractNumberField<C,T>,T extends Number>,T extends Number>getEmptyValue in class AbstractField<C extends AbstractNumberField<C,T>,T extends Number>public void setValue(T value)
getValue(), fires a value change event.setValue in interface HasValue<AbstractField.ComponentValueChangeEvent<C extends AbstractNumberField<C,T>,T extends Number>,T extends Number>setValue in class AbstractField<C extends AbstractNumberField<C,T>,T extends Number>value - the new valuepublic T getValue()
null .getValue in interface HasValue<AbstractField.ComponentValueChangeEvent<C extends AbstractNumberField<C,T>,T extends Number>,T extends Number>getValue in class AbstractField<C extends AbstractNumberField<C,T>,T extends Number>protected void setMin(double min)
GeneratedVaadinNumberFieldDescription copied from corresponding location in WebComponent:
The minimum value of the field.
setMin in class GeneratedVaadinNumberField<C extends AbstractNumberField<C,T>,T extends Number>min - the double value to setprotected double getMinDouble()
GeneratedVaadinNumberFieldDescription copied from corresponding location in WebComponent:
The minimum value of the field.
This property is not synchronized automatically from the client side, so the returned value may not be the same as in client side.
getMinDouble in class GeneratedVaadinNumberField<C extends AbstractNumberField<C,T>,T extends Number>min property from the webcomponentprotected void setMax(double max)
GeneratedVaadinNumberFieldDescription copied from corresponding location in WebComponent:
The maximum value of the field.
setMax in class GeneratedVaadinNumberField<C extends AbstractNumberField<C,T>,T extends Number>max - the double value to setprotected double getMaxDouble()
GeneratedVaadinNumberFieldDescription copied from corresponding location in WebComponent:
The maximum value of the field.
This property is not synchronized automatically from the client side, so the returned value may not be the same as in client side.
getMaxDouble in class GeneratedVaadinNumberField<C extends AbstractNumberField<C,T>,T extends Number>max property from the webcomponentprotected void setStep(double step)
GeneratedVaadinNumberFieldDescription copied from corresponding location in WebComponent:
Specifies the allowed number intervals of the field.
setStep in class GeneratedVaadinNumberField<C extends AbstractNumberField<C,T>,T extends Number>step - the double value to setprotected double getStepDouble()
GeneratedVaadinNumberFieldDescription copied from corresponding location in WebComponent:
Specifies the allowed number intervals of the field.
This property is not synchronized automatically from the client side, so the returned value may not be the same as in client side.
getStepDouble in class GeneratedVaadinNumberField<C extends AbstractNumberField<C,T>,T extends Number>step property from the webcomponentpublic void setInvalid(boolean invalid)
GeneratedVaadinTextFieldDescription copied from corresponding location in WebComponent:
This property is set to true when the control value is invalid.
setInvalid in interface HasValidationsetInvalid in class GeneratedVaadinTextField<C extends AbstractNumberField<C,T>,T extends Number>invalid - the boolean value to setpublic boolean isInvalid()
HasValidationtrue if component input is invalid, false
otherwise.isInvalid in interface HasValidationpublic Validator<T> getDefaultValidator()
HasValidatorBinder and
can be seen as a validation failure.getDefaultValidator in interface HasValidator<T extends Number>public Registration addValidationStatusChangeListener(ValidationStatusChangeListener<T> listener)
HasValidator
Note: This method can be overridden by the implementing
classes e.g. components, to enable the associated Binder.Binding
instance subscribing for their validation change events and revalidate
itself.
This method primarily designed for notifying the Binding about the
validation status changes of a bound component at the client-side.
WebComponents such as <vaadin-date-picker> or any
other component that accept a formatted text as input should be able to
communicate their invalid status to their server-side instance, and a
bound server-side component instance must notify its binding about this
validation status change as well. When the binding instance revalidates,
a chain of validators and convertors get executed one of which is the
default validator provided by HasValidator.getDefaultValidator().
Thus, In order for the binding to be able to show/clear errors for its
associated bound field, it is important that implementing components take
that validation status into account while implementing any validator and
converter including HasValidator.getDefaultValidator(). Here is
an example:
@Tag("date-picker-demo")
public class DatePickerDemo implements HasValidator<LocalDate> {
// Each web component has a way to communicate its validation status
// to its server-side component instance. The following clientSideValid
// state is introduced here just for the sake of simplicity of this code
// snippet:
boolean clientSideValid = true;
/**
* Note how clientSideValid engaged in the definition
* of this method. It is important to reflect this status either
* in the returning validation result of this method or any other
* validation that is associated with this component.
*/
@Override
public Validator getDefaultValidator() {
return (value, valueContext) -> clientSideValid ? ValidationResult.ok()
: ValidationResult.error("Invalid date format");
}
private final Collection<ValidationStatusChangeListener<LocalDate>>
validationStatusListeners = new ArrayList<>();
/**
* This enables the binding to subscribe for the validation status
* change events that are fired by this component and revalidate
* itself respectively.
*/
@Override
public Registration addValidationStatusChangeListener(
ValidationStatusChangeListener<LocalDate> listener) {
validationStatusListeners.add(listener);
return () -> validationStatusListeners.remove(listener);
}
private void fireValidationStatusChangeEvent(
boolean newValidationStatus) {
if (this.clientSideValid != newValidationStatus) {
this.clientSideValid = newValidationStatus;
var event = new ValidationStatusChangeEvent<>(this,
newValidationStatus);
validationStatusListeners.forEach(
listener -> listener.validationStatusChanged(event));
}
}
}
addValidationStatusChangeListener in interface HasValidator<T extends Number>Binder.BindingBuilderImpl.bind(ValueProvider,
Setter)protected void validate()
validate in class GeneratedVaadinTextField<C extends AbstractNumberField<C,T>,T extends Number>public void setRequiredIndicatorVisible(boolean requiredIndicatorVisible)
HasValueIf set visible, it is visually indicated in the user interface.
The method is intended to be used with Binder which does
server-side validation. In case HTML element has its own (client-side)
validation it should be disabled when
setRequiredIndicatorVisible(true) is called and re-enabled
back on setRequiredIndicatorVisible(false). It's
responsibility of each component implementation to follow the contract so
that the method call doesn't do anything else than show/hide the
"required" indication. Usually components provide their own
setRequired method which should be called in case the
client-side validation is required.
setRequiredIndicatorVisible in interface HasValue<AbstractField.ComponentValueChangeEvent<C extends AbstractNumberField<C,T>,T extends Number>,T extends Number>setRequiredIndicatorVisible in interface HasValueAndElement<AbstractField.ComponentValueChangeEvent<C extends AbstractNumberField<C,T>,T extends Number>,T extends Number>requiredIndicatorVisible - true to make the required indicator visible,
false if notprotected void onAttach(AttachEvent attachEvent)
ComponentThe default implementation does nothing.
This method is invoked before the AttachEvent is fired for the
component.
protected boolean isEnforcedFieldValidationEnabled()
Exposed with protected visibility to support mocking
The method requires the VaadinSession instance to obtain the
application configuration properties, otherwise, the feature is
considered disabled.
true if enabled, false otherwise.Copyright © 2025. All rights reserved.