通用事件
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());
}