Java Vaadin Viritin多选选择无法正常工作
我使用Viritin MultiSelectTable来显示JPA实体。实体显示正确,但当我单击一行时,所有行都被选中 我按如下方式初始化我的表:Java Vaadin Viritin多选选择无法正常工作,java,vaadin,Java,Vaadin,我使用Viritin MultiSelectTable来显示JPA实体。实体显示正确,但当我单击一行时,所有行都被选中 我按如下方式初始化我的表: MultiSelectTable<MyEntity> acFiles = new MultiSelectTable<MyEntity>().withProperties( "filedate", "filesize", "rows", "filename" );
MultiSelectTable<MyEntity> acFiles = new MultiSelectTable<MyEntity>().withProperties(
"filedate",
"filesize",
"rows",
"filename"
);
acFiles.setOptions(myDAO.findAll());
acFiles.addListener(((Listener) event -> {
System.out.println("Clicked Row");
}));
multiselectable acFiles=new multiselectable().withProperties(
“文件日期”,
“文件大小”,
“行”,
“文件名”
);
setOptions(myDAO.findAll());
acFiles.addListener(((Listener)事件->{
System.out.println(“单击行”);
}));
我做错了什么,以至于每次单击时都选择了所有行?这些症状听起来像是在MyEntity类中错误地实现了equals/hashCode方法实现,而Vaadin对所有对象都一视同仁。如果是JPA实体,一个非常好的工作策略就是这样实现它们:
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if(this.id == null) {
return false;
}
if (obj instanceof MyEntity && obj.getClass().equals(getClass())) {
return this.id.equals(((MyEntity) obj).id);
}
return false;
}
@Override
public int hashCode() {
int hash = 5;
hash = 43 * hash + Objects.hashCode(this.id);
return hash;
}
“完美方式”取决于您如何使用标识符