Data binding 瓦丁';s Binder#hasChanges()返回错误';假';

Data binding 瓦丁';s Binder#hasChanges()返回错误';假';,data-binding,vaadin8,Data Binding,Vaadin8,我正在使用我的webapp中的binder.addStatusChangeListener(…)部分代码。由此得出的结论是: 人豆 public类Person实现可序列化{ 私有字符串名称; 公众人物(){} 公众人物(最终字符串名称){ this.name=名称; } 公共字符串getName(){ 返回名称; } public void setName(最终字符串名){ this.name=名称; } } 个人观点 公共类PersonView扩展了垂直布局{ 私人最终人员=新人员(“Ger

我正在使用我的webapp中的
binder.addStatusChangeListener(…)
部分代码。由此得出的结论是:

人豆
public类Person实现可序列化{
私有字符串名称;
公众人物(){}
公众人物(最终字符串名称){
this.name=名称;
}
公共字符串getName(){
返回名称;
}
public void setName(最终字符串名){
this.name=名称;
}
}
个人观点
公共类PersonView扩展了垂直布局{
私人最终人员=新人员(“Gerold Broser”);
私有最终文本字段名称=新文本字段(“名称:”);
私人最终BeanValidationBinder活页夹=
新BeanValidationBinder(Person.class);
专用最终按钮=新按钮(“按钮”);
公共PersonView(){
超级();
binder.bindInstanceFields(本);
binder.setBean(人);
添加组件(名称);
添加组件(按钮);
binder.addStatusChangeListener(事件->{
最终布尔值hasChanges,是有效的;
out.println(“hasChanges=“+(hasChanges=event.getBinder().hasChanges());
out.println(“isValid=“+(isValid=event.getBinder().isValid()));
按钮.setEnabled(hasChanges&&isValid);
} );
}
}
一旦我在浏览器中更改
文本字段的内容,就会得到以下输出:

hasChanges=false
isValid=true
这是一个bug还是我错过了什么?

来自:

public boolean hasChanges()

检查自上次显式调用
readBean(对象)
removeBean()
writeBean(对象)
writeBeanIfValid(对象)
。不成功的写入操作不会影响此值

请注意,如果使用
setBean(Object)
方法,Binder会在所有验证程序通过后立即提交更改。因此,当使用 使用它的这个方法很少有意义,而且几乎总是返回 错误。

每种情况的返回值编译为以下内容 表:

返回:
自上次调用setBean、readBean、writeBean或writeBeanIfValid以来,任何绑定字段的值是否已更改

总之,使用
setBean(myBean)
将触发自动提交。因此,如果您愿意,可以使用
binder.readBean(myBean)
&
binder.writeBean(myBean)

╔════════════╦════════════╦═════════╦═════════╦══════════════════╦════════════════════╗
║            ║ After      ║ After   ║ After   ║ After successful ║ After unsuccessful ║
║            ║ readBean,  ║ valid   ║ invalid ║ writeBean or     ║ writeBean or       ║
║            ║ setBean or ║ user    ║ user    ║ writeBeanIfValid ║ writeBeanIfValid   ║
║            ║ removeBean ║ changes ║ changes ║                  ║                    ║
╠════════════╬════════════╬═════════╬═════════╬══════════════════╬════════════════════╣
║ A bean is  ║            ║         ║         ║                  ║                    ║
║ currently  ║   false    ║  false  ║  true   ║      false       ║     no change      ║
║ bound      ║            ║         ║         ║                  ║                    ║
╟────────────╫────────────╫─────────╫─────────╫──────────────────╫────────────────────╢
║ No bean is ║            ║         ║         ║                  ║                    ║
║ currently  ║   false    ║  true   ║  true   ║      false       ║     no change      ║
║ bound      ║            ║         ║         ║                  ║                    ║
╚════════════╩════════════╩═════════╩═════════╩══════════════════╩════════════════════╝