我有一个 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));
https://github.com/alejandro-du/crudui/blob/master/demo/src/main/java/org/vaadin/crudui/demo/ui/view/simplecrudview.java
2条答案
按热度按时间wnrlj8wa1#
也许有一个更好的解决方案,但一个解决方法是在
Message
使用javascript的字段。这应该具有使两个复选框位于同一行的效果。为此,需要添加一个编辑器打开的侦听器,在其中执行以下代码来添加换行符
ut6juiuv2#
我添加了一个组件作为列。
为此,您需要从
要分组的列,并将它们添加到呈现为列的水平布局中。在水平布局中,可以添加复选框,手动绑定值。