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.ClientValidatedEvent
BlurNotifier.BlurEvent<C extends Component>
FocusNotifier.FocusEvent<C extends Component>
HasValue.ValueChangeEvent<V>, HasValue.ValueChangeListener<E extends HasValue.ValueChangeEvent<?>>
DEFAULT_CHANGE_TIMEOUT
AUTOCOMPLETE_ATTRIBUTE
AUTOCAPITALIZE_ATTRIBUTE
AUTOCORRECT_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.ValueChangeEvent s 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.ValueChangeEvent s 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, hasControlsBoolean
addChangeListener, 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, setRequired
getSynchronizationRegistration, hasValidValue, setPresentationValue, setSynchronizedEvent
addValueChangeListener, isEmpty, setModelValue, valueEquals
addListener, fireEvent, from, get, getChildren, getElement, getEventBus, getId, getLocale, getParent, getTranslation, getTranslation, getTranslation, getTranslation, getUI, hasListener, isAttached, isTemplateMapped, isVisible, onDetach, onEnabledStateChanged, set, setElement, setId, setVisible
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getCssSize, getHeight, getHeightUnit, getMaxHeight, getMaxWidth, getMinHeight, getMinWidth, getWidth, getWidthUnit, setHeight, setHeight, setHeightFull, setMaxHeight, setMaxHeight, setMaxWidth, setMaxWidth, setMinHeight, setMinHeight, setMinWidth, setMinWidth, setSizeFull, setSizeUndefined, setWidth, setWidth, setWidthFull
getPrefixComponent, getSuffixComponent, setPrefixComponent, setSuffixComponent
addInputListener
addKeyDownListener, addKeyDownListener, addKeyPressListener, addKeyPressListener, addKeyUpListener, addKeyUpListener
addCompositionEndListener, addCompositionStartListener, addCompositionUpdateListener
getAutocomplete, setAutocomplete
getAutocapitalize, setAutocapitalize
isAutocorrect, setAutocorrect
getHelperComponent, getHelperText, setHelperComponent, setHelperText
getElement
addClientValidatedEventListener
addClassName, addClassNames, getClassName, getClassNames, getStyle, hasClassName, removeClassName, removeClassNames, setClassName, setClassName
addFocusShortcut, blur, focus, getTabIndex, setTabIndex
addBlurListener
addFocusListener
isEnabled, setEnabled
addThemeName, addThemeNames, getThemeName, getThemeNames, hasThemeName, removeThemeName, removeThemeNames, setThemeName, setThemeName
isReadOnly, isRequiredIndicatorVisible, setReadOnly
clear, getOptionalValue
addAttachListener
addDetachListener
public 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 HasValueChangeMode
null
if
the value is not synchronizedpublic void setValueChangeMode(ValueChangeMode valueChangeMode)
HasValueChangeMode
setValueChangeMode
in interface HasValueChangeMode
valueChangeMode
- new value change mode, or null
to disable the value
synchronizationpublic void setValueChangeTimeout(int valueChangeTimeout)
HasValueChangeMode
HasValue.ValueChangeEvent
s are triggered when the
ValueChangeMode is set to ValueChangeMode.LAZY
, or
ValueChangeMode.TIMEOUT
.
Implementations should use
ValueChangeMode.applyChangeTimeout(ValueChangeMode, int, DomListenerRegistration)
.
setValueChangeTimeout
in interface HasValueChangeMode
valueChangeTimeout
- the timeout in milliseconds of how often
HasValue.ValueChangeEvent
s are triggered.public int getValueChangeTimeout()
HasValueChangeMode
HasValue.ValueChangeEvent
s are triggered when the ValueChangeMode is set
to ValueChangeMode.LAZY
, or ValueChangeMode.TIMEOUT
.getValueChangeTimeout
in interface HasValueChangeMode
HasValue.ValueChangeEvent
s are triggered.public String getErrorMessage()
HasValidation
getErrorMessage
in interface HasValidation
public void setErrorMessage(String errorMessage)
GeneratedVaadinTextField
Description copied from corresponding location in WebComponent:
Error to show when the input value is invalid.
setErrorMessage
in interface HasValidation
setErrorMessage
in class GeneratedVaadinTextField<C extends AbstractNumberField<C,T>,T extends Number>
errorMessage
- the String value to setpublic void setLabel(String label)
setLabel
in interface HasLabel
setLabel
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)
GeneratedVaadinTextField
Description 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)
GeneratedVaadinTextField
Description 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)
GeneratedVaadinTextField
Description 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)
GeneratedVaadinNumberField
Description 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()
GeneratedVaadinNumberField
Description 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)
GeneratedVaadinNumberField
Description 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()
GeneratedVaadinNumberField
Description 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)
GeneratedVaadinNumberField
Description 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()
GeneratedVaadinNumberField
Description 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)
GeneratedVaadinTextField
Description copied from corresponding location in WebComponent:
This property is set to true when the control value is invalid.
setInvalid
in interface HasValidation
setInvalid
in class GeneratedVaadinTextField<C extends AbstractNumberField<C,T>,T extends Number>
invalid
- the boolean value to setpublic boolean isInvalid()
HasValidation
true
if component input is invalid, false
otherwise.isInvalid
in interface HasValidation
public Validator<T> getDefaultValidator()
HasValidator
Binder
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)
HasValue
If 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)
Component
The 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.