1

vaadin で最初のアプリケーションを開発しようとしています。コンポーネント、レイアウトを少し見ました.....そして今、UIコンポーネントをDataModelにバインドする方法を学ぼうとしています。

私はこのクラスを持っています

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());
        }
    });
}

}

私の問題は、ボタンを押すと、フィールドの内容を変更しても、常にマリオ・ロッシが表示されることです。

どこが間違っていますか?

4

1 に答える 1

3

言って変更をコミットする必要があります

fieldGroup.commit();

または非バッファ モードでフィールド グループを設定します。

fieldGroup.setBuffered(false); 
于 2013-06-13T11:30:12.933 に答える