很抱歉,这个问题已经被问过,但在搜索这些主题后仍然无法找出问题。
我有如下非常简单的bean,
<code>
public class FileBean extends AbstractFileBean {
...
private int headingRow = 0;
private ColumnDefinition columnSet;
...
}
</code>
现在使用上面的 bean,尝试将这些属性绑定(bind)到 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 字段仍然显示为空白。
设置 Binder 时是否缺少某些内容,导致 UI 无法刷新?
如果需要更多信息,请告诉我。
提前致谢,
最佳答案
您需要更新您的BeanItem<FileBean>
不是你的Bean
因为否则没有人会真正注意到这种变化。
BeanItem<FileBean> item = csvbinder.getItemDataSource();
item.getItemProperty("name").setValue(file.getName());
item.getItemProperty("filePath").setValue(filePath);
关于Vaadin BeanFieldGroup 绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23741348/