假设我们有一个带有 Save 和 Cancel 操作的表单。
我想要
save()
方法
绑定器实际上是为了更新 bean,但是在 cancel()
方法中,它不应该对 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());
}
任何帮助都会很棒,提前致谢!
使用缓冲模式时,即使用
Binder#getBean
和readBean
,方法writeBean
返回null。
Binder#readBean
方法将使用 bean 中的值填充绑定字段。
方法
Binder#writeBean
将尝试根据绑定字段的值更新 bean 的属性,前提是它们通过了验证和转换。此方法有多种变体,例如 Binder#writeBeanIfValid
、Binder#writeBeanAsDraft
...适用于特定用例。
通常您应该使用
readBean(bean)
来实现恢复更改操作。