gpt4 book ai didi

Java-Vaadin : NativeSelect setValue not working

转载 作者:太空宇宙 更新时间:2023-11-04 07:33:44 25 4
gpt4 key购买 nike

我需要为 NativeSelect 设置一个值,设置我希望在向 Select 字段添加项目时在 i 之后显示的元素。我可以假设这是我应该完成的任务的一个很好的例子:

public class TestselectUI extends UI {
@Override
protected void init(VaadinRequest request) {
final VerticalLayout layout = new VerticalLayout();
layout.setMargin(true);
setContent(layout);

NativeSelect sel = new NativeSelect();
Customer c1 = new Customer("1", "Pippo");
Customer c2 = new Customer("2", "Pluto");
Customer c3 = new Customer("3", "Paperino");
Customer c4 = new Customer("4", "Pantera");
Customer c5 = new Customer("5", "Panda");

sel.addItem(c1);
sel.addItem(c2);
sel.addItem(c3);
sel.addItem(c4);
sel.addItem(c5);

Customer test = new Customer(c4.id, c4.name);
sel.setValue(test);

layout.addComponent(sel);
}

private class Customer {
public String id;
public String name;

/**
* @param id
* @param name
*/
public Customer(String id, String name) {
super();
this.id = id;
this.name = name;
}

@Override
public String toString() {
return this.name;
}

@Override
public boolean equals(final Object object) {
// return true if it is the same instance
if (this == object) {
return true;
}
// equals takes an Object, ensure we compare apples with apples
if (!(object instanceof Customer)) {
return false;
}
final Customer other = (Customer) object;

// implies if EITHER instance's name is null we don't consider them equal
if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
return false;
}

return true;
}
}
}

我的问题是值设置不正确并且结果总是为空。对于这个问题有什么建议吗?

最佳答案

在Java中,hashCode()equals()必须一致:

Whenever a.equals(b), then a.hashCode() must be same as b.hashCode().

请参阅javadoc for Object#equals(Object)this StackOverflow question进行更多讨论和推理。

因此,在您的示例中,您需要使用名称和 id 对 Customer 实现 hashCode()(我的 IDE 生成了此代码)。

public class Customer {
[...]

@Override
public int hashCode() {
int result = id != null ? id.hashCode() : 0;
result = 31 * result + (name != null ? name.hashCode() : 0);
return result;
}
}

关于Java-Vaadin : NativeSelect setValue not working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17298314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com