TreeTable的选择事件SelectionEvent的方法 isUserOriginated() 无效,无法判断是前端触发还是代码触发,这个怎么解决呢
已经在英文论坛反馈此问题。需等 core team 确认。
作为暂时方案,可以在界面添加自定义的标记,在代码选中时设置标记,做完代码的事情后,标记设为 false:
@Inject
private TreeTable<TreeEntity> treeEntitiesTable;
@Inject
private CollectionContainer<TreeEntity> treeEntitiesDc;
private boolean selectFromCode = false;
@Subscribe
public void onAfterShow(AfterShowEvent event) {
this.selectFromCode = true;
treeEntitiesTable.setSelected(treeEntitiesDc.getItems().get(0));
}
public void logicWhenSelectFromCode() {
System.out.println("select from code");
this.selectFromCode = false;
}
public void logicWhenSelectFromUI() {
System.out.println("select from UI");
}
@Subscribe("treeEntitiesTable")
public void onTreeEntitiesTableSelection(Table.SelectionEvent<TreeEntity> event) {
if (this.selectFromCode) {
this.logicWhenSelectFromCode();
} else {
this.logicWhenSelectFromUI();
}
}
好的 非常感谢 暂时这样解决了