如何将对象列表设置为Vaadin 8组合框

时间:2017-07-06 07:51:07

标签: java vaadin vaadin8

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

enter image description here

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

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()方法,因为我将其用于其他目的。

1 个答案:

答案 0 :(得分:7)

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

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());