如何将对象列表设置为 Vaadin 8 组合框
How to set object list to Vaadin 8 combobox
我想将复杂对象列表集成到 Vaadin 组合框。我按如下方式进行了尝试,但只显示了垃圾值(toString() 值)。但是我想知道如何设置应该在下拉列表中显示的特定属性。
class 以下对象应在组合框中呈现。
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());
我想将复杂对象列表集成到 Vaadin 组合框。我按如下方式进行了尝试,但只显示了垃圾值(toString() 值)。但是我想知道如何设置应该在下拉列表中显示的特定属性。
class 以下对象应在组合框中呈现。
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());