com.vaadin.flow.component.textfield.
Class EmailField
All Implemented Interfaces:
AttachNotifier
, BlurNotifier<EmailField>
, CompositionNotifier
, DetachNotifier
, Focusable<EmailField>
, FocusNotifier<EmailField>
, HasAriaLabel
, HasElement
, HasEnabled
, HasHelper
, HasLabel
, HasPlaceholder
, HasSize
, HasStyle
, HasTheme
, HasValidation
, HasValue<AbstractField.ComponentValueChangeEvent<EmailField,
, HasValueAndElement<AbstractField.ComponentValueChangeEvent<EmailField,
, InputNotifier
, KeyNotifier
, HasAllowedCharPattern
, HasClearButton
, HasClientValidation
, HasPrefix
, HasSuffix
, HasThemeVariant<TextFieldVariant>
, HasTooltip
, HasValidationProperties
, InputField<AbstractField.ComponentValueChangeEvent<EmailField,
, HasAutocapitalize
, HasAutocomplete
, HasAutocorrect
, HasPrefixAndSuffix
, HasValidator<String>
, HasValueChangeMode
, Serializable
Email Field is an extension of Text Field that only accepts email addresses as input.
Validation
Email 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 address adheres to the RFC 5322 standard email format and satisfies the specified constraints. If validation fails, the component is marked as invalid and an error message is displayed below the input.
The following constraints are supported:
setPattern(String)
can be used to modify the default email format,
for example, to require a specific email domain.
Error messages for email format and constraints can be configured with the
EmailField.EmailFieldI18n
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 maximum 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
EmailField.EmailFieldI18n
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 ClassesModifier and TypeClassDescriptionstatic class
The internationalization properties for
EmailField
.Nested 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
EmailField
.EmailField
(HasValue.ValueChangeListener<? super AbstractField.ComponentValueChangeEvent<EmailField, String>> listener) Constructs an empty
EmailField
with a value change listener.EmailField
(String label) Constructs an empty
EmailField
with the given label.EmailField
(String label, HasValue.ValueChangeListener<? super AbstractField.ComponentValueChangeEvent<EmailField, String>> listener) Constructs an empty
EmailField
with a value change listener and a label.EmailField
(String label, String placeholder) Constructs an empty
EmailField
with the given label and placeholder text.EmailField
(String label, String initialValue, HasValue.ValueChangeListener<? super AbstractField.ComponentValueChangeEvent<EmailField, String>> listener) Constructs a
EmailField
with a value change listener, a label and an initial value. -
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
Gets the minimum number of characters (in Unicode code points) that the user can enter.
A regular expression that specifies a custom email format to use instead of the RFC 5322 standard format during validation.
getValue()
Returns the current value of the email 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 that specifies a custom email format.
void
setRequiredIndicatorVisible
(boolean required) Sets whether the user is required to provide a value.
void
Sets the value of this email 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
-
EmailField
public EmailField()Constructs an empty
EmailField
. -
EmailField
Constructs an empty
EmailField
with the given label.Parameters:
label
- the text to set as the label -
EmailField
Constructs an empty
EmailField
with the given label and placeholder text.Parameters:
label
- the text to set as the labelplaceholder
- the placeholder text to set -
EmailField
public EmailField(HasValue.ValueChangeListener<? super AbstractField.ComponentValueChangeEvent<EmailField, String>> listener) Constructs an empty
EmailField
with a value change listener.Parameters:
listener
- the value change listenerSee Also:
-
EmailField
public EmailField(String label, HasValue.ValueChangeListener<? super AbstractField.ComponentValueChangeEvent<EmailField, String>> listener) Constructs an empty
EmailField
with a value change listener and a label.Parameters:
label
- the text to set as the labellistener
- the value change listenerSee Also:
-
EmailField
public EmailField(String label, String initialValue, HasValue.ValueChangeListener<? super AbstractField.ComponentValueChangeEvent<EmailField, String>> listener) Constructs a
EmailField
with a value change listener, a label 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 email format and different constraints can be configured with the
EmailField.EmailFieldI18n
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<EmailField,
String>, String> Specified by:
setRequiredIndicatorVisible
in interfaceHasValueAndElement<AbstractField.ComponentValueChangeEvent<EmailField,
String>, String> Overrides:
setRequiredIndicatorVisible
in classTextFieldBase<EmailField,
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. Emails 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. Emails 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()Gets 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 that specifies a custom email format. This will override the RFC 5322 standard format, which is used by default during validation. Emails 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.
EmailField.EmailFieldI18n.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 custom format patternSee Also:
-
getPattern
A regular expression that specifies a custom email format to use instead of the RFC 5322 standard format during validation.
Returns:
the custom format pattern
See 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<EmailField,
String>, String> Overrides:
getEmptyValue
in classAbstractField<EmailField,
String> Returns:
empty value
-
setValue
Sets the value of this email 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 email field, as long as no new converter is defined.Specified by:
setValue
in interfaceHasValue<AbstractField.ComponentValueChangeEvent<EmailField,
String>, String> Overrides:
setValue
in classAbstractField<EmailField,
String> Parameters:
value
- the new value, notnull
-
getValue
Returns the current value of the email field. By default, the empty email field will return an empty string.
Specified by:
getValue
in interfaceHasValue<AbstractField.ComponentValueChangeEvent<EmailField,
String>, String> Overrides:
getValue
in classAbstractField<EmailField,
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(EmailFieldI18n)
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
-