有没有办法在活页夹的特定字段上添加类似值更改侦听器的东西?
Is there a way to add a something like a value change listener on specific field in binder?
我需要在我的界面中添加对 TextField 和 ComboBox 更改的反应。
Binder 是在 Vaadin 中处理数据绑定的便捷方式。
我无法在 textField.addValueChangeListener(...)
上使用,因为它是在绑定模型中设置新值之前调用的。
有没有办法在活页夹的特定字段上添加类似值更改侦听器的东西?
我可以使用 binder.addValueChangeListener()
但它会在每次绑定字段更改时触发,我无法轻易区分它们。
理想情况下,应该是这样的:
binder.forField(specificTextField)
.withConverter(...)
.withValidator(...)
.bind(Person::getName, Person::setName)
.addValueChangeListener(...); // nonexistent functional
对于是否有办法将值更改侦听器添加到单个绑定本身的问题,答案是否定的。我同意这可能是 Flow API 的一个很酷且有用的补充。请继续在他们的 github
中写一个问题
但是,正如您自己注意到的那样,有一种方法 Binder::addValueChangeListener
, 是一种区分它们的方法。接受的 eventListener 有一种方法可以获取触发更改事件的 HasValue
(a.k.a。绑定的输入字段)。它还可以访问旧值和新值。
TextField tf = new TextField();
ComboBox cb = new ComboBox();
// todo: binding of fields
binder.addValueChangeListener(valueChangeListener -> {
if(valueChangeListener.getHasValue().equals(tf)){
// tf value changed
} else if(valueChangeListener.getHasValue().equals(cb)) {
// cb value changed
}
}
我需要在我的界面中添加对 TextField 和 ComboBox 更改的反应。
Binder 是在 Vaadin 中处理数据绑定的便捷方式。
我无法在 textField.addValueChangeListener(...)
上使用,因为它是在绑定模型中设置新值之前调用的。
有没有办法在活页夹的特定字段上添加类似值更改侦听器的东西?
我可以使用 binder.addValueChangeListener()
但它会在每次绑定字段更改时触发,我无法轻易区分它们。
理想情况下,应该是这样的:
binder.forField(specificTextField)
.withConverter(...)
.withValidator(...)
.bind(Person::getName, Person::setName)
.addValueChangeListener(...); // nonexistent functional
对于是否有办法将值更改侦听器添加到单个绑定本身的问题,答案是否定的。我同意这可能是 Flow API 的一个很酷且有用的补充。请继续在他们的 github
中写一个问题但是,正如您自己注意到的那样,有一种方法 Binder::addValueChangeListener
, 是一种区分它们的方法。接受的 eventListener 有一种方法可以获取触发更改事件的 HasValue
(a.k.a。绑定的输入字段)。它还可以访问旧值和新值。
TextField tf = new TextField();
ComboBox cb = new ComboBox();
// todo: binding of fields
binder.addValueChangeListener(valueChangeListener -> {
if(valueChangeListener.getHasValue().equals(tf)){
// tf value changed
} else if(valueChangeListener.getHasValue().equals(cb)) {
// cb value changed
}
}