com.vaadin.flow.component.textfield.
Class TextField
All Implemented Interfaces:
AttachNotifier
, BlurNotifier<TextField>
, CompositionNotifier
, DetachNotifier
, Focusable<TextField>
, FocusNotifier<TextField>
, HasAriaLabel
, HasElement
, HasEnabled
, HasHelper
, HasLabel
, HasPlaceholder
, HasSize
, HasStyle
, HasTheme
, HasValidation
, HasValue<AbstractField.ComponentValueChangeEvent<TextField,
, HasValueAndElement<AbstractField.ComponentValueChangeEvent<TextField,
, InputNotifier
, KeyNotifier
, HasAllowedCharPattern
, HasClearButton
, HasClientValidation
, HasPrefix
, HasSuffix
, HasThemeVariant<TextFieldVariant>
, HasTooltip
, HasValidationProperties
, InputField<AbstractField.ComponentValueChangeEvent<TextField,
, HasAutocapitalize
, HasAutocomplete
, HasAutocorrect
, HasPrefixAndSuffix
, HasValidator<String>
, HasValueChangeMode
, Serializable
Text Field allows the user to input and edit text. Prefix and suffix components, such as icons, are also supported.
Validation
Text Field comes with a built-in validation mechanism based on constraints. Validation is triggered whenever the user applies an input change, for example by pressing Enter or blurring the field. Programmatic value changes trigger validation as well. In eager and lazy value change modes, validation is also triggered on every character press with a delay according to the selected mode.
Validation verifies that the value satisfies the specified constraints. If any of the constraints are violated, the component is marked as invalid and an error message is displayed below the input.
The following constraints are supported:
Error messages for constraints can be configured with the
TextField.TextFieldI18n
object, using the respective properties. If you want to
provide a single catch-all error message, you can also use the
setErrorMessage(String)
method. Note that such an error message will
take priority over i18n error messages if both are set.
In addition to validation, constraints may also limit user input. For example, the browser will prevent the user from entering more text than specified by the max length constraint.
For more advanced validation that requires custom rules, you can use
Binder
. By default, before running custom validators, Binder will
also check the component constraints and display error messages from the
TextField.TextFieldI18n
object. The exception is the required constraint, for
which Binder provides its own API, see
asRequired()
.
However, if Binder doesn't fit your needs and you want to implement fully
custom validation logic, you can disable the constraint validation by setting
setManualValidation(boolean)
to true. This will allow you to control
the invalid state and the error message manually using
HasValidationProperties.setInvalid(boolean)
and setErrorMessage(String)
API.
Author:
Vaadin Ltd
See Also:
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from class com.vaadin.flow.component.AbstractField
AbstractField.ComponentValueChangeEvent<C extends Component,
V> Nested classes/interfaces inherited from interface com.vaadin.flow.component.BlurNotifier
BlurNotifier.BlurEvent<C extends Component>
Nested classes/interfaces inherited from interface com.vaadin.flow.component.FocusNotifier
FocusNotifier.FocusEvent<C extends Component>
Nested classes/interfaces inherited from interface com.vaadin.flow.component.shared.HasClientValidation
HasClientValidation.ClientValidatedEvent
Nested classes/interfaces inherited from interface com.vaadin.flow.component.HasValue
HasValue.ValueChangeEvent<V>, HasValue.ValueChangeListener<E extends HasValue.ValueChangeEvent<?>>
-
Field Summary
Fields inherited from interface com.vaadin.flow.component.textfield.HasAutocapitalize
AUTOCAPITALIZE_ATTRIBUTE
Fields inherited from interface com.vaadin.flow.component.textfield.HasAutocomplete
AUTOCOMPLETE_ATTRIBUTE
Fields inherited from interface com.vaadin.flow.component.textfield.HasAutocorrect
AUTOCORRECT_ATTRIBUTE
Fields inherited from interface com.vaadin.flow.data.value.HasValueChangeMode
DEFAULT_CHANGE_TIMEOUT
-
Constructor Summary
ConstructorsConstructorDescriptionConstructs an empty
TextField
.TextField
(HasValue.ValueChangeListener<? super AbstractField.ComponentValueChangeEvent<TextField, String>> listener) Constructs an empty
TextField
with a value change listener.Constructs an empty
TextField
with the given label.TextField
(String label, HasValue.ValueChangeListener<? super AbstractField.ComponentValueChangeEvent<TextField, String>> listener) Constructs an empty
TextField
with a label and a value change listener.Constructs an empty
TextField
with the given label and placeholder text.TextField
(String label, String initialValue, HasValue.ValueChangeListener<? super AbstractField.ComponentValueChangeEvent<TextField, String>> listener) Constructs an empty
TextField
with a label,a value change listener and an initial value.Constructs a
TextField
with the given label, an initial value and placeholder text. -
Method Summary
Modifier and TypeMethodDescriptionReturns a validator that checks the state of the Value.
Returns the value that represents an empty value.
getI18n()
Gets the internationalization object previously set for this component.
int
Gets the maximum number of characters (in Unicode code points) that the user can enter.
int
Gests the minimum number of characters (in Unicode code points) that the user can enter.
Gets the regular expression that the value is checked against during validation.
getValue()
Returns the current value of the text field.
protected void
onAttach
(AttachEvent attachEvent) Called when the component is attached to a UI.
void
setErrorMessage
(String errorMessage) Sets a single error message to display for all constraint violations.
void
Sets the internationalization object for this component.
void
setManualValidation
(boolean enabled) Sets whether manual validation mode is enabled for the component.
void
setMaxLength
(int maxLength) Sets the maximum number of characters (in Unicode code points) that the user can enter.
void
setMinLength
(int minLength) Sets the minimum number of characters (in Unicode code points) that the user can enter.
void
setPattern
(String pattern) Sets a regular expression for the value to pass during validation.
void
setRequiredIndicatorVisible
(boolean required) Sets whether the user is required to provide a value.
void
Sets the value of this text field.
protected void
validate()
Validates the current value against the constraints and sets the
invalid
property and theerrorMessage
property based on the result.Methods inherited from class com.vaadin.flow.component.textfield.TextFieldBase
addToInput, addToPrefix, addToSuffix, getAriaLabel, getAriaLabelledBy, getTitle, getValueChangeMode, getValueChangeTimeout, isAutofocus, isAutoselect, isRequired, isRequiredIndicatorVisible, setAriaLabel, setAriaLabelledBy, setAutofocus, setAutoselect, setLabel, setRequired, setTitle, setValueChangeMode, setValueChangeTimeout
Methods inherited from class com.vaadin.flow.component.AbstractSinglePropertyField
getSynchronizationRegistration, hasValidValue, setPresentationValue, setSynchronizedEvent
Methods inherited from class com.vaadin.flow.component.AbstractField
addValueChangeListener, isEmpty, setModelValue, valueEquals
Methods inherited from class com.vaadin.flow.component.Component
addListener, findAncestor, fireEvent, from, get, getChildren, getElement, getEventBus, getId, getListeners, getLocale, getParent, getTranslation, getTranslation, getTranslation, getTranslation, getTranslation, getTranslation, getUI, hasListener, isAttached, isTemplateMapped, isVisible, onDetach, onEnabledStateChanged, removeFromParent, scrollIntoView, scrollIntoView, set, setElement, setId, setVisible
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface com.vaadin.flow.component.AttachNotifier
addAttachListener
Methods inherited from interface com.vaadin.flow.component.BlurNotifier
addBlurListener
Methods inherited from interface com.vaadin.flow.component.CompositionNotifier
addCompositionEndListener, addCompositionStartListener, addCompositionUpdateListener
Methods inherited from interface com.vaadin.flow.component.DetachNotifier
addDetachListener
Methods inherited from interface com.vaadin.flow.component.Focusable
addFocusShortcut, blur, focus, getTabIndex, setTabIndex
Methods inherited from interface com.vaadin.flow.component.FocusNotifier
addFocusListener
Methods inherited from interface com.vaadin.flow.component.shared.HasAllowedCharPattern
getAllowedCharPattern, setAllowedCharPattern
Methods inherited from interface com.vaadin.flow.component.textfield.HasAutocapitalize
getAutocapitalize, setAutocapitalize
Methods inherited from interface com.vaadin.flow.component.textfield.HasAutocomplete
getAutocomplete, setAutocomplete
Methods inherited from interface com.vaadin.flow.component.textfield.HasAutocorrect
isAutocorrect, setAutocorrect
Methods inherited from interface com.vaadin.flow.component.shared.HasClearButton
isClearButtonVisible, setClearButtonVisible
Methods inherited from interface com.vaadin.flow.component.shared.HasClientValidation
addClientValidatedEventListener
Methods inherited from interface com.vaadin.flow.component.HasElement
getElement
Methods inherited from interface com.vaadin.flow.component.HasEnabled
isEnabled, setEnabled
Methods inherited from interface com.vaadin.flow.component.HasHelper
getHelperComponent, getHelperText, setHelperComponent, setHelperText
Methods inherited from interface com.vaadin.flow.component.HasPlaceholder
getPlaceholder, setPlaceholder
Methods inherited from interface com.vaadin.flow.component.shared.HasPrefix
getPrefixComponent, setPrefixComponent
Methods inherited from interface com.vaadin.flow.component.HasSize
getHeight, getHeightUnit, getMaxHeight, getMaxWidth, getMinHeight, getMinWidth, getWidth, getWidthUnit, setHeight, setHeight, setHeightFull, setMaxHeight, setMaxHeight, setMaxWidth, setMaxWidth, setMinHeight, setMinHeight, setMinWidth, setMinWidth, setSizeFull, setSizeUndefined, setWidth, setWidth, setWidthFull
Methods inherited from interface com.vaadin.flow.component.HasStyle
addClassName, addClassNames, getClassName, getClassNames, getStyle, hasClassName, removeClassName, removeClassNames, setClassName, setClassName
Methods inherited from interface com.vaadin.flow.component.shared.HasSuffix
getSuffixComponent, setSuffixComponent
Methods inherited from interface com.vaadin.flow.component.HasTheme
addThemeName, addThemeNames, getThemeName, getThemeNames, hasThemeName, removeThemeName, removeThemeNames, setThemeName, setThemeName
Methods inherited from interface com.vaadin.flow.component.shared.HasThemeVariant
addThemeVariants, removeThemeVariants
Methods inherited from interface com.vaadin.flow.component.shared.HasTooltip
getTooltip, setTooltipText
Methods inherited from interface com.vaadin.flow.component.shared.HasValidationProperties
getErrorMessage, isInvalid, setInvalid
Methods inherited from interface com.vaadin.flow.data.binder.HasValidator
addValidationStatusChangeListener
Methods inherited from interface com.vaadin.flow.component.HasValue
addValueChangeListener, clear, getOptionalValue, isEmpty
Methods inherited from interface com.vaadin.flow.component.HasValueAndElement
isReadOnly, setReadOnly
Methods inherited from interface com.vaadin.flow.component.InputNotifier
addInputListener
Methods inherited from interface com.vaadin.flow.component.KeyNotifier
addKeyDownListener, addKeyDownListener, addKeyPressListener, addKeyPressListener, addKeyUpListener, addKeyUpListener
-
Constructor Details
-
TextField
public TextField()Constructs an empty
TextField
. -
TextField
Constructs an empty
TextField
with the given label.Parameters:
label
- the text to set as the label -
TextField
Constructs an empty
TextField
with the given label and placeholder text.Parameters:
label
- the text to set as the labelplaceholder
- the placeholder text to set -
TextField
Constructs a
TextField
with the given label, an initial value and placeholder text.Parameters:
label
- the text to set as the labelinitialValue
- the initial valueplaceholder
- the placeholder text to setSee Also:
-
TextField
public TextField(HasValue.ValueChangeListener<? super AbstractField.ComponentValueChangeEvent<TextField, String>> listener) Constructs an empty
TextField
with a value change listener.Parameters:
listener
- the value change listenerSee Also:
-
TextField
public TextField(String label, HasValue.ValueChangeListener<? super AbstractField.ComponentValueChangeEvent<TextField, String>> listener) Constructs an empty
TextField
with a label and a value change listener.Parameters:
label
- the text to set as the labellistener
- the value change listenerSee Also:
-
TextField
public TextField(String label, String initialValue, HasValue.ValueChangeListener<? super AbstractField.ComponentValueChangeEvent<TextField, String>> listener) Constructs an empty
TextField
with a label,a value change listener and an initial value.Parameters:
label
- the text to set as the labelinitialValue
- the initial valuelistener
- the value change listenerSee Also:
-
-
Method Details
-
setErrorMessage
Sets a single error message to display for all constraint violations. The error message will only appear when the component is flagged as invalid, either as a result of constraint validation or by the developer through
HasValidationProperties.setInvalid(boolean)
if manual validation mode is enabled.Distinct error messages for different constraints can be configured with the
TextField.TextFieldI18n
object, using the respective properties. However, note that the error message set withsetErrorMessage(String)
will take priority and override any i18n error messages if both are set.Specified by:
setErrorMessage
in interfaceHasValidation
Specified by:
setErrorMessage
in interfaceHasValidationProperties
Parameters:
errorMessage
- the error message to set, ornull
to clear -
setRequiredIndicatorVisible
public void setRequiredIndicatorVisible(boolean required) Description copied from class:
TextFieldBase
Sets whether the user is required to provide a value. When required, an indicator appears next to the label and the field invalidates if the value is cleared.
NOTE: The required indicator is only visible when the field has a label, see
TextFieldBase.setLabel(String)
.Specified by:
setRequiredIndicatorVisible
in interfaceHasValue<AbstractField.ComponentValueChangeEvent<TextField,
String>, String> Specified by:
setRequiredIndicatorVisible
in interfaceHasValueAndElement<AbstractField.ComponentValueChangeEvent<TextField,
String>, String> Overrides:
setRequiredIndicatorVisible
in classTextFieldBase<TextField,
String> Parameters:
required
-true
to make the field required,false
otherwiseSee Also:
-
setMaxLength
public void setMaxLength(int maxLength) Sets the maximum number of characters (in Unicode code points) that the user can enter. Values with a length exceeding this limit will cause the component to invalidate.
The maximum length is inclusive.
Parameters:
maxLength
- the maximum lengthSee Also:
-
getMaxLength
public int getMaxLength()Gets the maximum number of characters (in Unicode code points) that the user can enter.
Returns:
the maximum length
See Also:
-
setMinLength
public void setMinLength(int minLength) Sets the minimum number of characters (in Unicode code points) that the user can enter. Values with a length shorter than this limit will cause the component to invalidate.
The minimum length is inclusive.
Parameters:
minLength
- the minimum lengthSee Also:
-
getMinLength
public int getMinLength()Gests the minimum number of characters (in Unicode code points) that the user can enter.
Returns:
the minimum length
See Also:
-
setPattern
Sets a regular expression for the value to pass during validation. Values that do not match the pattern will cause the component to invalidate.
The pattern must be a valid JavaScript Regular Expression that matches the entire value, not just some subset.
TextField.TextFieldI18n.setPatternErrorMessage(String)
- https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#htmlattrdefpattern
- https://html.spec.whatwg.org/multipage/input.html#attr-input-pattern
Parameters:
pattern
- the new String pattern ornull
to clear itSee Also:
-
getPattern
Gets the regular expression that the value is checked against during validation.
Returns:
the pattern or
null
if not setSee Also:
-
getEmptyValue
Description copied from interface:
HasValue
Returns the value that represents an empty value.
By default
HasValue
is expected to supportnull
as empty values. Specific implementations might not support this.Specified by:
getEmptyValue
in interfaceHasValue<AbstractField.ComponentValueChangeEvent<TextField,
String>, String> Overrides:
getEmptyValue
in classAbstractField<TextField,
String> Returns:
empty value
-
setValue
Sets the value of this text field. If the new value is not equal to
getValue()
, fires a value change event. ThrowsNullPointerException
, if the value is null.Note:
Binder
will take care of thenull
conversion when integrates with text field, as long as no new converter is defined.Specified by:
setValue
in interfaceHasValue<AbstractField.ComponentValueChangeEvent<TextField,
String>, String> Overrides:
setValue
in classAbstractField<TextField,
String> Parameters:
value
- the new value, notnull
-
getValue
Returns the current value of the text field. By default, the empty text field will return an empty string.
Specified by:
getValue
in interfaceHasValue<AbstractField.ComponentValueChangeEvent<TextField,
String>, String> Overrides:
getValue
in classAbstractField<TextField,
String> Returns:
the current value.
-
getDefaultValidator
Description copied from interface:
HasValidator
Returns a validator that checks the state of the Value. This should be overridden for components with internal value conversion or validation, e.g. when the user is providing a string that has to be parsed into a date. An invalid input from user will be exposed to a
Binder
and can be seen as a validation failure.Specified by:
getDefaultValidator
in interfaceHasValidator<String>
Returns:
state validator
-
setManualValidation
public void setManualValidation(boolean enabled) Description copied from interface:
HasValidation
Sets whether manual validation mode is enabled for the component.
When enabled, the component doesn't perform its built-in constraint validation on value change, blur, and other events. This allows manually controlling the invalid state and error messages using the
HasValidation.setInvalid(boolean)
andHasValidation.setErrorMessage(String)
methods. Manual mode is helpful when there is a need for a totally custom validation logic that cannot be achieved with Binder.Example:
Field field = new Field(); field.setManualValidation(true); field.addValueChangeListener(event -> { if (Objects.equal(event.getValue(), "")) { field.setInvalid(true); field.setErrorMessage("The field is required."); } else { field.setInvalid(false); } });
For components that don't have built-in validation, the method has no effect.
Specified by:
setManualValidation
in interfaceHasValidation
Parameters:
enabled
- whether to enable manual validation mode. -
validate
protected void validate()Validates the current value against the constraints and sets the
invalid
property and theerrorMessage
property based on the result. If a custom error message is provided withsetErrorMessage(String)
, it is used. Otherwise, the error message defined in the i18n object is used.The method does nothing if the manual validation mode is enabled.
-
onAttach
Description copied from class:
Component
Called when the component is attached to a UI.
This method is invoked before the
Make sure to callAttachEvent
is fired for the component.super.onAttach
when overriding this method. -
getI18n
Gets the internationalization object previously set for this component.
NOTE: Updating the instance that is returned from this method will not update the component if not set again using
setI18n(TextFieldI18n)
Returns:
the i18n object or
null
if no i18n object has been set -
setI18n
Sets the internationalization object for this component.
Parameters:
i18n
- the i18n object, notnull
-