Browse Source

3 args method buildAndBind should be overriden, not 2 args (#12453).

Change-Id: I7afabec7e0d9334b799019b581fca858895b2cc1
tags/7.4.0.beta1
Denis Anisimov 9 years ago
parent
commit
304cd3f48a

+ 3
- 3
server/src/com/vaadin/data/fieldgroup/BeanFieldGroup.java View File

@@ -155,10 +155,10 @@ public class BeanFieldGroup<T> extends FieldGroup {
}

@Override
public Field<?> buildAndBind(String caption, Object propertyId)
throws BindException {
public <T extends Field> T buildAndBind(String caption, Object propertyId,
Class<T> fieldType) throws BindException {
ensureNestedPropertyAdded(propertyId);
return super.buildAndBind(caption, propertyId);
return super.buildAndBind(caption, propertyId, fieldType);
}

@Override

+ 14
- 0
server/tests/src/com/vaadin/tests/server/component/fieldgroup/BeanFieldGroupTest.java View File

@@ -11,6 +11,7 @@ import com.vaadin.data.fieldgroup.FieldGroup.CommitException;
import com.vaadin.data.fieldgroup.PropertyId;
import com.vaadin.data.util.BeanItem;
import com.vaadin.ui.Field;
import com.vaadin.ui.RichTextArea;
import com.vaadin.ui.TextField;

public class BeanFieldGroupTest {
@@ -135,6 +136,19 @@ public class BeanFieldGroupTest {
assertEquals(bean.nestedBean.hello, helloField.getValue().toString());
}

@Test
public void buildAndBindNestedRichTextAreaProperty() {

MyBean bean = new MyBean();

BeanFieldGroup<MyBean> bfg = new BeanFieldGroup<MyBean>(MyBean.class);
bfg.setItemDataSource(bean);

RichTextArea helloField = bfg.buildAndBind("Hello string",
"nestedBean.hello", RichTextArea.class);
assertEquals(bean.nestedBean.hello, helloField.getValue().toString());
}

@Test
public void setDataSource_nullBean_nullBeanIsSetInDataSource() {
BeanFieldGroup<MyBean> group = new BeanFieldGroup<MyBean>(MyBean.class);

+ 2
- 2
uitest/src/com/vaadin/tests/fieldgroup/FormWithNestedProperties.java View File

@@ -31,8 +31,8 @@ public class FormWithNestedProperties extends AbstractBeanFieldGroupTest {
super.setup();

setFieldBinder(new BeanFieldGroup<Person>(Person.class));
country = getFieldBinder().buildAndBind("country", "address.country",
NativeSelect.class);
country = (NativeSelect) getFieldBinder().buildAndBind("country",
"address.country", NativeSelect.class);
getFieldBinder().bindMemberFields(this);
addComponent(firstName);
addComponent(lastName);

Loading…
Cancel
Save