如何使用Vaadin(FieldGroup)绑定绑定复杂类型的集合/集合?

时间:2015-07-21 14:48:33

标签: java vaadin vaadin7

如何让FieldGroup / BeanFieldGroup绑定项目集合?

想象一下,有一本书,有一套复杂类型的章节。

 `row.names<-`(t(t(rbind(y,z))[,(x!='Yes')+1L]),x)

然后,对于Vaadin布局,他们将被绑定到例如一个VerticalLayout(例如)。如何才能将强类型的“章节”集合/集合绑定?

public class Book {
    private String title;
    private Set<Chapter> chapters;
}

public class Chapter {
    private String Text;
    private int number;
}

绑定本身工作正常但仅适用于顶级“Book”。

public class BookLayout extends VerticalLayout {

    private TextField title = new TextField();
    // ?? chapters
}

public class ChapterLayout extends VerticalLayout {

    private TextField text = new TextField();
    private TextField number = new TextField();
}

如何绑定一组复杂类型?我只找到了一个单一(复杂类型)字段的例子。

1 个答案:

答案 0 :(得分:4)

您可以使用CustomField撰写自己的字段,以便在UI中处理此问题:

  

一个字段,其UI内容可以由用户构建,从而能够创建例如通过组合Vaadin组件来形成字段。可以定制视觉呈现和现场逻辑。子类必须实现AbstractField.getType()initContent()。大多数自定义字段可以简单地组成一个用户界面,在必要时调用方法AbstractField.setInternalValue(Object)AbstractField.getInternalValue()。也可以覆盖AbstractField.validate()AbstractField.setInternalValue(Object)AbstractField.commit()AbstractField.setPropertyDataSource(Property)AbstractField.isEmpty()以及该字段的其他逻辑。

然后,您必须处理为那里的每个集合项设置章节布局的绑定(例如,将一个放在容器中,绑定它),添加一些添加/删除功能。基本上,由您决定如何实施CustomField<Set<Chapter>>