我有一个entity
有这两个字段的。
private boolean alarmActive;
private boolean messageHasBeenSent;
当我用 Vaadin CRUD API 展示这个时。
GridCrud<Alarm> alarmCrud = new GridCrud<>(Alarm.class);
CrudFormFactory<Alarm> crudFormFactory = new DefaultCrudFormFactory<Alarm>(Alarm.class);
alarmCrud.setCrudFormFactory(crudFormFactory);
alarmCrud.getGrid().setColumns("name", "email", "message", "alarmActive", "messageHasBeenSent", "sa0Min", "sa0Max", "sa1Min", "sa1Max", "sa1dMin", "sa1dMax", "sa2dMin", "sa2dMax", "sa3dMin", "sa3dMax", "a0Min", "a0Max", "a1Min", "a1Max", "a2Min", "a2Max", "a3Min", "a3Max");
alarmCrud.getGrid().setColumnReorderingAllowed(true);
crudFormFactory.setUseBeanValidation(true);
crudFormFactory.setVisibleProperties(new String[] { "name", "email", "message", "alarmActive", "messageHasBeenSent", "sa0Min", "sa0Max", "sa1Min", "sa1Max", "sa1dMin", "sa1dMax", "sa2dMin", "sa2dMax", "sa3dMin", "sa3dMax", "a0Min", "a0Max", "a1Min", "a1Max", "a2Min", "a2Max", "a3Min", "a3Max" });
当我尝试在 CRUD 数据库中添加新行时,我得到了这个视图。
问题:
我想让两个复选框在同一行吗?我怎么能用这个当前实体做到这一点?
我知道有一种方法可以在同一行有多个复选框,但该方法不正确,因为它取决于每个复选框都需要成为一个实体,并且该实体未连接到我的数据库 CRUD 实体。
在下面的这个例子中,他使用了
@ManyToMany
@Fetch(FetchMode.JOIN)
@NotNull
private Set<Group> groups = new HashSet<>();
在一行中创建多个复选框。问题是如果实体以空开头,则实体与实体Group
不同。User
在这里,他将 加载groupService
到复选框提供程序中,这会在同一行上创建多个复选框。
crud.getCrudFormFactory().setFieldProvider("groups", new CheckBoxGroupProvider<>("Groups", groupService.findAll(), Group::getName));