Vaadin BeanFieldGroup绑定

时间:2014-05-19 15:14:22

标签: vaadin

很抱歉,如果已经提出这个问题,但搜索完这些主题后仍无法解决问题。

我有非常简单的bean,如下所示,

<code>
    public class FileBean extends AbstractFileBean {
    ...
    private int headingRow = 0;
    private ColumnDefinition columnSet;
    ...
}
</code>

现在使用上面的bean,我试图将这些属性绑定到UI字段,如下所示。

<code>
    public AddCsv(AbstractFileBean fileBean) {
    csvbinder = new BeanFieldGroup<FileBean>(FileBean.class);
    csvbinder.setItemDataSource((FileBean) fileBean);
    csvbinder.setBuffered(false);
    csvbinder.bind((TextField)form.getField(UIField.NAME), "name");
    csvbinder.bind((IntStepper)form.getField(UIField.HEADINGROW), "headingRow");
    ComboBox columnDefinitions = (ComboBox)form.getField(UIField.COLUMNDEF);
    csvbinder.bind(columnDefinitions, "columnSet");
    //AddFileUtil.populateColumnSets(columnDefinitions,fileBean); - this method fills up     combo box
    ...
}
</code>

问题:我有一个带有上述字段集的表单。在“上传新文件”的同一表格上还有另一个按钮,它基本上从系统中获取文件,并按照服务层设置名称和路径,如下所示

<code>
    fileBean.setName(file.getName());
    fileBean.setFilePath(filePath);
</code> 

选择文件后,返回相同的表单不会显示填充的UI字段。奇怪的是,当您在名称文本字段内的那些表单字段中手动键入时,会填充在filebean中。但唯一的问题是其他方式。选择文件后。这些UI字段仍显示为空白。

在设置活页夹时是否缺少某些东西,而不让UI刷新?

如果需要更多信息,请告诉我。

提前致谢,

1 个答案:

答案 0 :(得分:4)

您需要更新BeanItem<FileBean>而不是Bean,否则没有人会真正注意到更改。

BeanItem<FileBean> item = csvbinder.getItemDataSource();
item.getItemProperty("name").setValue(file.getName());
item.getItemProperty("filePath").setValue(filePath);