如何使用Vaadin(FieldGroup)绑定绑定一组/复杂类型的集合?
我怎样才能让FieldGroup/BeanFieldGroup绑定项目的集合?如何使用Vaadin(FieldGroup)绑定绑定一组/复杂类型的集合?
想象一下,有一本书,其中一套章节是复杂的类型。
public class Book {
private String title;
private Set<Chapter> chapters;
}
public class Chapter {
private String Text;
private int number;
}
然后,对于Vaadin布局,它们被绑定到例如一个VerticalLayout(例如)。我怎样才能得到绑定的“章节”的强类型集合/集合?
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();
}
该绑定本身工作正常,但只适用于顶级“书”。
Book dto = ... // Comes populated with chapters etc.
BookLayout layout = new BookLayout();
BeanFieldGroup<Book> binder = new BeanFieldGroup<>(Book.class);
binder.setItemDataSource(dto);
binder.bindMemberFields(layout);
如何绑定一组复杂类型?我只找到一个单一(复杂类型)字段的例子。
您可以撰写自己的领域你是如何想处理这在UI的CustomField
:
某个域的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>>
我也使用CustomField来处理类似的情况。现在我的问题是我有一个CustomField
你还记得你是怎么解决它 – enkara
好吧,我想我找到了:???类clazz中= Set.class;返程(类 >)clazz中; – enkara
你能给我们提供更多关于你的问题的信息,为什么你需要绑定set Set的章节?你必须对这个对象做什么操作? – Skizzo
我正在尝试创建一个类似于网络研讨会示例的可编辑表单,该示例在我的示例中具有一组复杂类型,而不仅仅是示例中的地址(例如地址集)中的单个值。 https://www.youtube.com/watch?v=aq_OXCVqvFI – lko