【问题标题】:How to set object list to Vaadin 8 combobox如何将对象列表设置为 Vaadin 8 组合框
【发布时间】:2017-07-06 07:51:07
【问题描述】:

我想将复杂对象列表集成到 Vaadin 组合框。我按如下方式进行了尝试,并且只显示垃圾值(toString() 值)。但我想知道如何设置应该在下拉列表中显示的特定属性。

下面的类对象应该在组合框中呈现。

public class TestExecution {
private String name;
private String startingTime;
private String endingTime;
private String status;

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getStartingTime() {
    return startingTime;
}

public void setStartingTime(String startingTime) {
    this.startingTime = startingTime;
}

public String getEndingTime() {
    return endingTime;
}

public void setEndingTime(String endingTime) {
    this.endingTime = endingTime;
}

public String getStatus() {
    return status;
}

public void setStatus(String status) {
    this.status = status;
}

}

注意:我不能覆盖 toString() 方法,因为我会将它用于其他目的。

【问题讨论】:

    标签: java vaadin vaadin8


    【解决方案1】:

    首先,您可以在创建组合框时给出如下类型。

    private ComboBox<TestExecution> comboExecution = new ComboBox<>("Select Execution");
    

    然后您可以通过设置 ItemCaptionGenerator 来指定渲染下拉项目标题的逻辑。

    comboExecution.setItemCaptionGenerator(new ItemCaptionGenerator<TestExecution>() {
            @Override
            public String apply(TestExecution execution) {
                return execution.getName();
            }
        });
    

    您可以使用 lamda 表达式简化代码,如下所示。

    comboExecution.setItemCaptionGenerator(execution -> execution.getName());
    

    【讨论】:

    • 一个提示:您甚至可以将 lambda 表达式简化为 TestExecution::getName
    • 是的,这是最简化的版本。谢谢@SteffenHarbich
    猜你喜欢
    • 1970-01-01
    • 2021-10-05
    • 1970-01-01
    • 2017-11-17
    • 2016-12-29
    • 1970-01-01
    • 2010-10-06
    • 1970-01-01
    • 2015-04-15
    相关资源
    最近更新 更多