Vaadin Binder 仅在保存操作时设置 bean

问题描述 投票:0回答:1

我有一个类似的问题,例如 this,但我根本找不到任何使用 vaadin binder 进行表单验证和恢复选项的示例。

假设我们有一个带有 SaveCancel 操作的表单。
我想要

save()
方法 绑定器实际上是为了更新 bean,但是在
cancel()
方法中,它不应该对 bean 执行任何操作,并保持原样,保留以前的值。

这是我的主要问题:

  • 应该如何初始化绑定器才能实现这样的功能?
  • 如何在保存方法中检索更新的bean?

我尝试了类似的方法,但在保存操作时bean始终为空

        private void initBinder() {
            binder.writeBeanAsDraft(myBean);
            binder.forField(inputField)
                    ....
        }
        
        private void save() {
            binder.writeBeanIfValid(myBean);
            binder.readBean(myBean); // retrieve the bean, to save it
            ...
            // save the bean to database
        }
        
        private void cancel() {
            binder.getBean(); // retrieve unchanged bean
            // resets the old values
            inputField.setValue(binder.getBean().getValue());
        }

任何帮助都会很棒,提前致谢!

java forms vaadin cancel-button
1个回答
0
投票

使用缓冲模式时,即使用

Binder#getBean
readBean
,方法
writeBean
返回null。

Binder#readBean
方法将使用 bean 中的值填充绑定字段。

方法

Binder#writeBean
将尝试根据绑定字段的值更新 bean 的属性,前提是它们通过了验证和转换。此方法有多种变体,例如
Binder#writeBeanIfValid
Binder#writeBeanAsDraft
...适用于特定用例。

通常您应该使用

readBean(bean)
来实现恢复更改操作。

© www.soinside.com 2019 - 2024. All rights reserved.