Vaadin 活页夹写入继承抽象的实例 class

Vaadin binder writing to an instance of an inherited abstract class

在我的 Vaadin 应用程序中,我正在尝试构建一个用户管理视图。它应该由能够维护多个用户角色的 CRUD 组件组成。每个角色都有自己的 class.

这是我的 class 层次结构。这一切都始于一个共同的祖先:

public abstract class AbstractUser {

    private String name;
    private Color favColor;

    ... other common fields and methods ...

}

然后是children:

public class User extends AbstractUser {

    ... additional methods ...

}
public class Admin extends User {

    ... additional methods ...

}
public class SuperAdmin extends Admin {

    ... additional methods ...

}

绊脚石:您不能使用我习惯的 com.vaadin.flow.data.binder.Binder 和抽象 class 来管理所有用户类型。当我尝试单击 crud 组件中的“新建项目”按钮时,活页夹尝试创建一个新的 AbstractUser 实例,这当然会失败。

那么处理这个问题的最佳方法是什么?

所有class都有相同的字段,所有这些字段都是由编辑器设置的。我不需要在此视图中更改用户角色,我想要的只是活页夹在创建新用户时不会失败。除了基本 User.

之外,不需要能够创建其他类型用户的新项目编辑器

我对如何执行此操作有一些想法,但我想要最干净的解决方案。

Crud 组件无法使用抽象 类。 我已经通过不使用 AbstractUser 并创建具有通用类型 User 的 crud 解决了这个问题,因此它也可以填充 AdminSuperAdmin.