2014-03-27 44 views
0

我有兩個字段綁定在一個字段組上。當第一個領域失去焦點時,我需要改變第二個領域。valuechange上的更新字段

我有什麼至今:

class MyBean { 
    private String first; 
    private String second; 

    //getters, setters 
} 

class MasterData extends CustomComponent{ 
    private TextField first; 
    private TextField second; 

    //add to layout, other tasks 
} 

//the calling code 

FieldGroup fieldgroup = new FieldGroup(new MyBean()); 
fieldgroup.bindMemberFields(new MasterData()); 
((AbstractComponent)fg.getField("first")).setImmediate(true); 
fg.getField("first").addValueChangeListener(new ValueChangeListener() { 

    @Override 
    public void valueChange(ValueChangeEvent event) { 
     MyBean bean = fg.getItemDataSource().getBean(); 
     bean.setSecond((String) event.getProperty().getValue()); 
     try { 
      fg.commit(); 
     } catch (CommitException e) { } 
    } 

}); 

值改變事件被稱爲,但第二場永遠不會被更新在屏幕上。我如何強制該字段組重新繪製其字段?

回答

1

你可能想看看BlurListener

此外,我認爲你需要更新TextField的值「手動」。在Bean中更改它可能不會更新TextField。當你在FieldGroup上調用commit()時,它將字段中的值提交給bean,而不是相反。所以在聽者的實施中,它可能看起來像這樣:

second.setValue(event.getProperty().getValue()); 
try { 
    fg.commit(); 
} catch (CommitException e) { }