Java-Vaadin:NativeSelect设置值不工作
我需要将一个值设置为NativeSelect,设置在我向Select字段添加项目时希望它显示的元素。 我可以假设这是我应该完成的一个很好的例子:Java-Vaadin:NativeSelect设置值不工作,java,select,vaadin,setvalue,Java,Select,Vaadin,Setvalue,我需要将一个值设置为NativeSelect,设置在我向Select字段添加项目时希望它显示的元素。 我可以假设这是我应该完成的一个很好的例子: public class TestselectUI extends UI { @Override protected void init(VaadinRequest request) { final VerticalLayout layout = new VerticalLayout(); layout.setMargin(true);
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;
}
}
}
我的问题是中的值设置不正确,结果总是为null。
有关此问题的任何提示?在Java中,hashCode()
和equals()
必须一致:
每当a.equals(b)时,a.hashCode()必须与b.hashCode()相同
有关更多讨论和推理,请参见和
所以,在您的示例中,您需要使用名称和id(我的IDE生成了此代码)在客户上实现hashCode()
在Java中,hashCode()
和equals()
必须一致:
每当a.equals(b)时,a.hashCode()必须与b.hashCode()相同
有关更多讨论和推理,请参见和
所以,在您的示例中,您需要使用名称和id(我的IDE生成了此代码)在客户上实现hashCode()
你正式成为我的偶像!:)谢谢!你正式成为我的偶像!:)谢谢!
public class Customer {
[...]
@Override
public int hashCode() {
int result = id != null ? id.hashCode() : 0;
result = 31 * result + (name != null ? name.hashCode() : 0);
return result;
}
}