Data binding 瓦丁';s Binder#hasChanges()返回错误';假';
我正在使用我的webapp中的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
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 ║ ║ ║ ║ ║ ║
╚════════════╩════════════╩═════════╩═════════╩══════════════════╩════════════════════╝