Vaadin BeanFieldGroup 绑定(bind)

标签 vaadin

很抱歉,这个问题已经被问过,但在搜索这些主题后仍然无法找出问题。

我有如下非常简单的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/

相关文章:

java - 调整 Vaadin 小部件之间的间距量

java - 在 Eclipse 中自动同​​步 Java servlet?

java - vaadin 表中出现 NullPointerException?

java - 瓦丁日历 : How to display another atrribute on Event cell

css - Vaadin Valo 样式表

java - BeanFieldGroup,在 ComboBox 中绑定(bind) List<String>?

java - Vaadin RichTextArea 动态滚动到底部

java - 如何循环使用 Vaadin 按钮?

java - SpringVaadinServlet 调用 VaadinServlet 中缺少的方法?

java - 无法将组件添加到布局