如何在Vaadin网格编辑器中为BigDecimal创建TextField并能够输入金额

时间:2018-03-30 07:49:45

标签: java vaadin vaadin8 vaadin-grid

问题是,因为我输入的值可以被覆盖。例如,如果我想输入" 12.34"但是在这段时间之后打字3需要我超过半秒钟(即#34; 12.3"然后这段时间被删除,我最后输入" 123")这非常烦人。我只需要查看我的纸张,因为我打字并且我无法输入任何数量的分数(期间后的数字)而不会产生大量数据输入错误,因为期间被删除。

Binder<Pojo> binder;

Binder.Binding<Pojo, BigDecimal> amountEditorBinder = binder.forField(amountTextField)
    .withValidator(DoubleValidator::isValidValue, "Must be valid amount")
    .withConverter(new StringToBigDecimalConverter(new BigDecimal("0"), "Must be an amount"))
    .bind(Pojo::getAmountBigDecimal, AccountEntry::setAmountBigDecimal);

grid.addColumn(Pojo::getAmount)
    .setEditorBinding(amountEditorBinder);

class Pojo
{
    private BigDecimal amount; // with getters and setters
}

我怀疑这个问题是由于这一行:

.withConverter(new StringToBigDecimalConverter(new BigDecimal("0"), "Must be an amount"))

但没有它我无法将TextField的值转换为Pojo中的值。有解决方法吗?

0 个答案:

没有答案