【问题标题】:vaadin CheckBoxGroup does not rendervaadin CheckBoxGroup 不呈现
【发布时间】:2021-06-17 12:10:39
【问题描述】:

我的程序可以添加或更新配置文件。在更新配置文件对话框中,选择您要更新的配置文件后。字段应填充选定的配置文件值。问题从填写 CheckboxGroup 字段开始。 (我的 CheckboxGroup 字段名称是 listBox 所以在那之后我会这样称呼它)。当我检查我的 listBox 选定项目时,我可以看到 listBox 选定的值是 true,但在前端,我看不到任何选择。所以基本上我想重新选择 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 具有真正的选定值。但我需要显示在前端页面上。

【问题讨论】:

    标签: java spring-boot frontend vaadin vaadin14


    【解决方案1】:

    我使用您的 listBox 初始化运行了一段快速代码,并且能够在前端将所有复选框设置为 true。这可能会对您有所帮助:

    listBox.getChildren().filter(Checkbox.class::isInstance)
                .map(Checkbox.class::cast)
                .forEach(c -> c.setValue(true));
    

    这会检索 CheckboxGroup 中的所有 Checkbox,检查它们是否是 Vaadin Checkbox 组件的实例,然后根据需要设置它们的 T/F 值。

    【讨论】:

    • 其实我发现了问题。如您所见,我的 checkBoxGroup 将项目保存为对象(列表对象)。当我单击按钮时,给定对象具有相同的值,但它不是同一个对象,这就是它保留数据但不更改前端的原因,因为它正在寻找同一个对象。我通过将 equals 方法添加到 Lists 对象模型来解决这个问题。但我想你的方式将是解决问题的第二种选择。我会接受你的帮助。谢谢。
    • .equals 调用很好 - 我的假设是问题出在 CheckBox 组件本身,而不是相关的对象列表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-09
    • 1970-01-01
    • 2018-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多