I’m showing a collection of beans in a combobox.
When creating the combobox, I want to preselect the previously saved selection. This bean (called “selectedBean” in the example below) is retrieved in a different hibernate-transaction than the bean-collection and therefore is not the same instance as the matching object in the collection.
I implemented the equals-method for Type “MyBeanType” and expected this to work:
List<MyBeanType> beans = myService.findAll();
myBeanContainer = new BeanItemContainer<MyBeanType>(MyBeanType.class);
myBeanContainer.addAll(beans);
view.setContainer(myBeanContainer); //view sets container and selected value on combobox
view.setSelectedBean(selectedBean);
But strangely no value is selected!
But when I change my code to this, it works:
List<MyBeanType> beans = myService.findAll();
for (MyBeanType beanInCollection : beans) {
if (beanInCollection.equals(selectedBean))
selectedBean = beanInCollection;
}
myBeanContainer = new BeanItemContainer<MyBeanType>(MyBeanType.class);
myBeanContainer.addAll(beans);
view.setContainer(myBeanContainer);
view.setSelectedBean(selectedBean);
The value in the collection corresponding “selectedBean” is selected correctly. That means my equals-method is working. But somehow it is not used by vaadin to identify the selected value. Why is that? What am I missing?