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

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

最佳答案

首先,您可以在创建组合框时指定组合框的类型,如下所示。

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

关于java - 如何将对象列表设置为 Vaadin 8 组合框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44942846/

相关文章:

java - 使用delete()删除文件 - Java

java - 如何从 java 读取 ffmpeg 响应并使用它来创建进度条?

javascript - Vaadin(自包含)portlet (Liferay) 与 Javascript (d3js)

maven - 在 Vaadin 项目中使用 web.xml

gradle - 无法使用Gradle和V-Leaflet编译vaadin小部件集

java - 在访问方法中使用相同的 UI 实例

java - Lombok @Builder 不创建不可变对象(immutable对象)?

java - 在 java 中,如何序列化未标记为 Serializable 的类?

java - Vaadin 无法保存设计,引发错误

spring-boot - Vaadin 使用 SpringSecurity 身份验证