Vaadin将setBean绑定到DAO仍然为null

时间:2018-03-11 00:26:11

标签: java spring vaadin

如何将TextFields中的数据绑定到DAO对象?这不起作用仍为null实体的DAO,所有绑定都设置好了

public void savePersonToDB() {
  personDAO = new PersonDAO();  
  binder.setBean(personDAO);    
    if (binder.validate().isOk()) {
    repository.save(personDAO);

1 个答案:

答案 0 :(得分:0)

  

personDAO = new PersonDAO();

使用默认构造函数实例化<launch> <node pkg="yourpackage" type="yourdefaultnodename"name="yourcustomnodename"/> </launch>

  

binder.setBean(PersonDao的);

这意味着加载personDAO实例中的值。将PersonDAO设置为在更新任何绑定字段时进行更新。

要将表单属性设置为personDAO bean,可以使用PersonDAO,这样可以更轻松地将字段绑定到bean。您可以阅读更多信息,data binding如何使用Vaadin Doc。

例如;

FieldGroup

new data binding API用新机制替换旧的Container,Item,Property,FieldGroup,Validator,Converter和相关类。使用这些组件的组件也会使用新API替换为更新的实现,并且旧的数据绑定API和组件已移至单独的兼容包中以便于迁移。

以下是来自Vaadin的有趣博客,可以帮助您了解// Have an item PropertysetItem item = new PropertysetItem(); item.addItemProperty("name", new ObjectProperty<String>("Zaphod")); item.addItemProperty("age", new ObjectProperty<Integer>(42)); // Define a form as a class that extends some layout class MyForm extends FormLayout { // Member that will bind to the "name" property TextField name = new TextField("Name"); // Member that will bind to the "age" property @PropertyId("age") TextField ageField = new TextField("Age"); public MyForm(Item item) { // Add the fields addComponent(name); addComponent(ageField); // Now bind the member fields to the item FieldGroup binder = new FieldGroup(item); binder.bindMemberFields(this); } } // Create one MyForm form = new MyForm(item); // And the form can be used in an higher-level layout layout.addComponent(form); 在Vaadin 8中的运作方式。 How to bind your form to your domain model – the Vaadin 8 style