更新valuechange字段

时间:2014-03-27 21:27:38

标签: vaadin7

我有两个与字段组绑定的字段。当第一个字段失去焦点时,我需要进行第二次字段更改。

到目前为止我所拥有的:

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 个答案:

答案 0 :(得分:1)

您可能需要查看BlurListener

另外,我认为您需要“手动”更新TextField的值。在bean中更改它可能不会更新TextField。当你在FieldGroup上调用commit()时,它会将字段中的值提交给bean,而不是相反。所以在监听器的实现中,它可能看起来像这样:

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