Общие обработчики
ClientValidatedEvent
com.vaadin.flow.component.shared.HasClientValidation.ClientValidatedEvent отправляется веб-компонентом всякий раз, когда он проверяется на стороне клиента. Это событие соответствует DOM-событию validated.
ComponentValueChangeEvent
com.vaadin.flow.component.AbstractField.ComponentValueChangeEvent отправляется при изменении значения компонента.
| Для типизированных компонентов используйте TypedValueChangeEvent, чтобы убедиться, что входное значение имеет необходимый тип, и избежать дополнительных преобразований типов и проверок. |
CompositionEndEvent
com.vaadin.flow.component.CompositionEndEvent отправляется, когда композиция завершена. Соответствует DOM-событию compositionend.
CompositionStartEvent
com.vaadin.flow.component.CompositionStartEvent отправляется при запуске композиции. Соответствует DOM-событию compositionstart.
CompositionUpdateEvent
com.vaadin.flow.component.CompositionUpdateEvent отправляется при обновлении композиции. Соответствует DOM-событию compositionupdate.
DetachEvent
com.vaadin.flow.component.DetachEvent отправляется перед тем, как компонент отсоединяется от UI.
InputEvent
com.vaadin.flow.component.InputEvent отправляется, когда компонент получает любой тип ввода (например, щелчок, нажатие клавиши). Соответствует DOM-событию input.
KeyDownEvent
com.vaadin.flow.component.KeyDownEvent отправляется при нажатии клавиши. Соответствует DOM-событию keydown.
KeyPressEvent
com.vaadin.flow.component.KeyPressEvent отправляется при нажатии клавиши. Соответствует DOM-событию keypress.
KeyUpEvent
com.vaadin.flow.component.KeyUpEvent отправляется при отпускании клавиши. Соответствует DOM-событию keyup.
statusChangeHandler
io.jmix.flowui.component.SupportsStatusChangeHandler используется для обработки изменений состояния компонента, например, сообщений проверки, установленных методом HasValidation.setErrorMessage(String).
Например, вместо отображения сообщений проверки под компонентом, можно использовать отдельный компонент, такой как Label:
<textField id="negativeField" datatype="int">
<validators>
<negative/>
</validators>
</textField>
<div id="infoLabel" visible="false"/>
Обработчик должен быть определен следующим образом:
@ViewComponent
private Div infoLabel;
@Install(to = "negativeField", subject = "statusChangeHandler")
private void negativeFieldStatusChangeHandler(
SupportsStatusChangeHandler.StatusContext<TypedTextField<String>>
statusContext) {
infoLabel.setVisible(true); (1)
infoLabel.setText(statusContext.getDescription()); (2)
}
| 1 | Делает infoLabel видимым. |
| 2 | Получает сообщение об ошибке из объекта StatusContext и устанавливает его в текст infoLabel. |
TypedValueChangeEvent
io.jmix.flowui.component.SupportsTypedValue.TypedValueChangeEvent отправляется, когда пользователь завершил манипуляции с компонентом. Например, после нажатия Enter или когда компонент теряет фокус.
Событие имеет следующие методы:
-
getOldValue()возвращает типизированное значение компонента до изменения. -
getValue()возвращает текущее типизированное значение компонента.
@Autowired
protected Notifications notifications;
@Subscribe("nameField")
protected void onNameFieldTypedValueChange(
SupportsTypedValue.TypedValueChangeEvent<TypedTextField<String>, String> event) {
notifications
.show("Before: " + event.getOldValue() +
". After: " + event.getValue());
}