Vaadin UI 不刷新
Vaadin UI does not refresh
我有代表员工的模型。它有一个字段(比如说薪水),这也是一个模型。所以基本上它是一个嵌套的属性。我使用 Hibernate、JPAcontainer 和 MasterDetailEditor 来可视化数据。所以我扩展了 FieldFactory 以便能够将值更改侦听器添加到薪水的 select 字段。此更改设置工资的税收字段。
正在运行,数据在数据库中更新,但在 UI 上没有更新。我在启用 Push 和 pollInterval 的情况下进行了尝试,其中 none 似乎有效。我通过它的 属性.
设置值
代码:
这是在覆盖的 createField 中
final AbstractField field = (AbstractField) super.createField(container, itemId, propertyId, uiContext);
field.setImmediate(true);
field.addValueChangeListener(new Property.ValueChangeListener() {
@Override
public void valueChange(ValueChangeEvent event) {
final Item item = container.getItem(itemId);
final String salaryTypeSelectorValue =
item.getItemProperty(propertyName).getValue().toString() != null ? item.getItemProperty(propertyName).getValue()
.toString() : REGULAR;
if (REGULAR.equals(salaryTypeSelectorValue)) {
final SalaryHistory salaryHistory = ((JPAContainer<SalaryHistory>) container).getItem(itemId).getEntity();
JPAContainer<SalaryHistory> salaryHistoryContainer = (JPAContainer<SalaryHistory>) container;
salaryHistoryContainer.getItem(itemId).getItemProperty("socialTax").setValue(new BigDecimal("28.5"));
}
}
});
return field;
更新
我设法实现了我想要的,也许有点 hacky,因为我不得不在工资模型中加入一个小逻辑:在工资类型的 setter 中,我也设置了税收和UI 立即更新。
感谢 Jan 通知我 :) 我设法实现了我想要的,也许这有点 hacky,因为我不得不在工资模型中加入一个小逻辑:在工资类型的 setter 中我也设置了税,UI 立即更新。
我有代表员工的模型。它有一个字段(比如说薪水),这也是一个模型。所以基本上它是一个嵌套的属性。我使用 Hibernate、JPAcontainer 和 MasterDetailEditor 来可视化数据。所以我扩展了 FieldFactory 以便能够将值更改侦听器添加到薪水的 select 字段。此更改设置工资的税收字段。
正在运行,数据在数据库中更新,但在 UI 上没有更新。我在启用 Push 和 pollInterval 的情况下进行了尝试,其中 none 似乎有效。我通过它的 属性.
设置值代码:
这是在覆盖的 createField 中
final AbstractField field = (AbstractField) super.createField(container, itemId, propertyId, uiContext);
field.setImmediate(true);
field.addValueChangeListener(new Property.ValueChangeListener() {
@Override
public void valueChange(ValueChangeEvent event) {
final Item item = container.getItem(itemId);
final String salaryTypeSelectorValue =
item.getItemProperty(propertyName).getValue().toString() != null ? item.getItemProperty(propertyName).getValue()
.toString() : REGULAR;
if (REGULAR.equals(salaryTypeSelectorValue)) {
final SalaryHistory salaryHistory = ((JPAContainer<SalaryHistory>) container).getItem(itemId).getEntity();
JPAContainer<SalaryHistory> salaryHistoryContainer = (JPAContainer<SalaryHistory>) container;
salaryHistoryContainer.getItem(itemId).getItemProperty("socialTax").setValue(new BigDecimal("28.5"));
}
}
});
return field;
更新
我设法实现了我想要的,也许有点 hacky,因为我不得不在工资模型中加入一个小逻辑:在工资类型的 setter 中,我也设置了税收和UI 立即更新。
感谢 Jan 通知我 :) 我设法实现了我想要的,也许这有点 hacky,因为我不得不在工资模型中加入一个小逻辑:在工资类型的 setter 中我也设置了税,UI 立即更新。