vaadin CheckBoxGroup 不呈现
vaadin CheckBoxGroup does not render
我的程序可以添加或更新配置文件。在更新配置文件对话框中,选择要更新的配置文件后。字段应填充选定的配置文件值。问题始于填充 CheckboxGroup 字段。 (我的 CheckboxGroup 字段名称是 listBox,所以之后我会这样称呼它)。当我检查我的列表框选择的项目时,我可以看到列表框选择的值是真的,但在前端,我看不到任何选择。所以基本上我想在 addValueChangeListener 中重新选择列表,但 CheckboxGroup 不会重新呈现。
listBox = new CheckboxGroup<>();
listBox.setItemLabelGenerator(Lists::getListName);
listBox.setItems();
listBox.setItems(listsList);
listBox.addThemeVariants(CheckboxGroupVariant.LUMO_VERTICAL);
listBox.setHeight("200px");
listBox.getStyle().set("overflow","AUTO");
listBox.setHelperText("Seçilen Listeler");
listBox.addThemeVariants(CheckboxGroupVariant.LUMO_HELPER_ABOVE_FIELD);
updateProfile.addValueChangeListener(e -> {
setUpdateProfileValues();
});
}
private void setUpdateProfileValues() {
if (updateProfile.getValue() == null)
return;
updateProfileName.setValue(updateProfile.getValue().getProfileName());
simAlgorithm.setValue(updateProfile.getValue().getSimAlgorithm());
searchType.setValue(updateProfile.getValue().getSearchType());
operationType.setValue(updateProfile.getValue().getOperatorType());
simPercentage.setValue(updateProfile.getValue().getSimPercentage());
numberOfResult.setValue(updateProfile.getValue().getNumberOfResults());
List<Lists> selectedLists = updateProfile.getValue().getLists();
selectedLists.forEach(lists -> log.error(lists.getListName()));
//selectedLists.forEach(listBox::select);
listBox.setValue(new HashSet<>(selectedLists));
listBox.getSelectedItems().forEach(selectedList -> log.error(selectedList.getListName()));
}
这是我针对这个问题的相关代码片段。顺便说一句,当我检查日志时,我可以看到 listBox 具有真正的选定值。但是我需要在前端页面上显示。
我 运行 使用您的 listBox 初始化的一段快速代码,我能够在前端将所有复选框设置为 true。这可能对您有帮助:
listBox.getChildren().filter(Checkbox.class::isInstance)
.map(Checkbox.class::cast)
.forEach(c -> c.setValue(true));
这会检索 CheckboxGroup 中的所有复选框,检查它们是否是 Vaadin Checkbox 组件的一个实例,然后根据需要设置它们的 T/F 值。
我的程序可以添加或更新配置文件。在更新配置文件对话框中,选择要更新的配置文件后。字段应填充选定的配置文件值。问题始于填充 CheckboxGroup 字段。 (我的 CheckboxGroup 字段名称是 listBox,所以之后我会这样称呼它)。当我检查我的列表框选择的项目时,我可以看到列表框选择的值是真的,但在前端,我看不到任何选择。所以基本上我想在 addValueChangeListener 中重新选择列表,但 CheckboxGroup 不会重新呈现。
listBox = new CheckboxGroup<>();
listBox.setItemLabelGenerator(Lists::getListName);
listBox.setItems();
listBox.setItems(listsList);
listBox.addThemeVariants(CheckboxGroupVariant.LUMO_VERTICAL);
listBox.setHeight("200px");
listBox.getStyle().set("overflow","AUTO");
listBox.setHelperText("Seçilen Listeler");
listBox.addThemeVariants(CheckboxGroupVariant.LUMO_HELPER_ABOVE_FIELD);
updateProfile.addValueChangeListener(e -> {
setUpdateProfileValues();
});
}
private void setUpdateProfileValues() {
if (updateProfile.getValue() == null)
return;
updateProfileName.setValue(updateProfile.getValue().getProfileName());
simAlgorithm.setValue(updateProfile.getValue().getSimAlgorithm());
searchType.setValue(updateProfile.getValue().getSearchType());
operationType.setValue(updateProfile.getValue().getOperatorType());
simPercentage.setValue(updateProfile.getValue().getSimPercentage());
numberOfResult.setValue(updateProfile.getValue().getNumberOfResults());
List<Lists> selectedLists = updateProfile.getValue().getLists();
selectedLists.forEach(lists -> log.error(lists.getListName()));
//selectedLists.forEach(listBox::select);
listBox.setValue(new HashSet<>(selectedLists));
listBox.getSelectedItems().forEach(selectedList -> log.error(selectedList.getListName()));
}
这是我针对这个问题的相关代码片段。顺便说一句,当我检查日志时,我可以看到 listBox 具有真正的选定值。但是我需要在前端页面上显示。
我 运行 使用您的 listBox 初始化的一段快速代码,我能够在前端将所有复选框设置为 true。这可能对您有帮助:
listBox.getChildren().filter(Checkbox.class::isInstance)
.map(Checkbox.class::cast)
.forEach(c -> c.setValue(true));
这会检索 CheckboxGroup 中的所有复选框,检查它们是否是 Vaadin Checkbox 组件的一个实例,然后根据需要设置它们的 T/F 值。