我有两个与字段组绑定的字段。当第一个字段失去焦点时,我需要进行第二次字段更改。
到目前为止我所拥有的:
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) { }
}
});
调用值更改事件,但第二个字段永远不会在屏幕上更新。我如何强制字段组重新绘制其字段?
答案 0 :(得分:1)
您可能需要查看BlurListener。
另外,我认为您需要“手动”更新TextField的值。在bean中更改它可能不会更新TextField。当你在FieldGroup上调用commit()时,它会将字段中的值提交给bean,而不是相反。所以在监听器的实现中,它可能看起来像这样:
second.setValue(event.getProperty().getValue());
try {
fg.commit();
} catch (CommitException e) { }