如何在 Vaadin CRUD 的同一行放置两个复选框?

问题描述

我有一个包含这两个字段的 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","a3Max" });
        

当我尝试在 CRUD 数据库中添加新行时,我得到了这个视图。

enter image description here

问题:

我想在同一行上有两个复选框吗?我该如何处理这个当前实体?

我知道有一种方法可以在同一行有多个复选框,但这种方法不正确,因为它取决于每个复选框都需要成为一个实体,并且该实体未连接到我的数据库 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

解决方法

也许有更好的解决方案,但一种解决方法是使用 JavaScript 在 model=ARMA(training['Y'],order=(1,0),exog=training[['A','B','C']]) model_fit=model.fit() model_fit.forecast(steps=1,exog=data[['A','C']].iloc[-1,:]) 字段后添加换行符。这应该具有使两个复选框在同一行中的效果。

为此,您需要添加一个编辑器打开的侦听器,您可以在其中执行以下代码以添加换行符

Message
,

我添加了一个组件作为列。

要做到这一点,你需要从

alarmCrud.getGrid().setColumns(...)

要分组的列,并将它们添加到 HorizontalLayout rendererd as column 中。您可以在 Horizo​​ntalLayout 中添加 CheckBox,手动绑定值。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...