2013-06-13 49 views
1

我试图在vaadin中开发我的第一个应用程序。我看到了一些组件,布局.....现在我试图学习如何绑定与DataModel UI组件。Vaadin数据模型不会更新

我有这个类

public class Utente { 

private String nome = "Mario"; 
private String cognome = "Rossi"; 


public Utente() { 
    // TODO Auto-generated constructor stub 
} 

public String getNome() { 
    return nome; 
} 

public void setNome(String nome) { 
    this.nome = nome; 
} 

public String getCognome() { 
    return cognome; 
} 

public void setCognome(String cognome) { 
    this.cognome = cognome; 
} 

} 

这CustomComponent

public class MyRegistration extends CustomComponent { 

private FormLayout mainLayout; 
private Button buttonSalva; 
private Utente utente; 
private BeanItem<Utente> beanItem; 
private FieldGroup fieldGroup; 

public MyRegistration() { 
    buildMainLayout(); 
    setCompositionRoot(mainLayout); 
} 

private FormLayout buildMainLayout() { 

    utente = new Utente(); 
    beanItem = new BeanItem<Utente>(utente); 
    fieldGroup = new FieldGroup(beanItem); 
    mainLayout = new FormLayout(); 

    setWidth("100.0%"); 
    setHeight("100.0%"); 

    mainLayout.addComponent(fieldGroup.buildAndBind("Nome", "nome")); 
    mainLayout.addComponent(fieldGroup.buildAndBind("Cognome", "cognome")); 

    // buttonSalva 
    buttonSalva = new Button(); 
    buttonSalva.setCaption("Salva"); 
    mainLayout.addComponent(buttonSalva); 

    addListener(); 

    return mainLayout; 
} 

private void addListener(){ 

    buttonSalva.addClickListener(new Button.ClickListener() { 
     public void buttonClick(ClickEvent event) { 
      System.out.println(fieldGroup.getItemDataSource()); 
     } 
    }); 
} 

} 

我的问题是,如果我按下按钮,我证明总是马里奥·罗西另外,如果我修改字段的内容。

我在哪里错了?

回答

3

你必须说

fieldGroup.commit(); 

提交更改或设置字段组在非缓冲模式:

fieldGroup.setBuffered(false);