通用事件
ClientValidatedEvent
com.vaadin.flow.component.shared.HasClientValidation.ClientValidatedEvent 由 web 组件在客户端层进行验证时发送。对应于 validated DOM 事件。
ComponentValueChangeEvent
当组件的输入值发生变化时,发送 com.vaadin.flow.component.AbstractField.ComponentValueChangeEvent 事件。
| 对于有参数类型的组件,可以使用 TypedValueChangeEvent,以确保输入值是正确的类型,还能避免额外的类型转换或检查。 |
CompositionEndEvent
当文本合成结束时发送 com.vaadin.flow.component.CompositionEndEvent 事件。对应于 compositionend DOM 事件。
CompositionStartEvent
当文本合成开始时发送 com.vaadin.flow.component.CompositionStartEvent 事件。对应于 compositionstart DOM 事件。
CompositionUpdateEvent
当文本合成更新时发送 com.vaadin.flow.component.CompositionUpdateEvent 事件。对应于 compositionupdate DOM 事件。
InputEvent
当组件收到任何类型的输入时(例如,点击、或者按下某个键),发送 com.vaadin.flow.component.InputEvent 事件。对应于 input DOM 事件。
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());
}