在Vaadin文本字段中输入货币值,并使用逗号作为十进制分隔符

在Vaadin文本字段中输入货币值,并使用逗号作为十进制分隔符,vaadin,currency,decimal-point,Vaadin,Currency,Decimal Point,我使用一个简单的TextField输入货币值,并希望将其转换为BigDecimal。现在我想输入像“145,53”(逗号分隔的小数,作为欧元的常用货币值)这样的值。但它只接受使用“145.53”的值 如何以正确的方式应用此功能?为文本字段设置自定义转换器 从这样的事情开始 public class CurrencyConverter extends StringToNumberConverter { @Override protected NumberFormat getFor

我使用一个简单的
TextField
输入货币值,并希望将其转换为
BigDecimal
。现在我想输入像“145,53”(逗号分隔的小数,作为欧元的常用货币值)这样的值。但它只接受使用“145.53”的值


如何以正确的方式应用此功能?

文本字段设置自定义转换器

从这样的事情开始

public class CurrencyConverter extends StringToNumberConverter {

    @Override
    protected NumberFormat getFormat(Locale locale) {
         if (locale == null) {
                locale = Locale.getDefault();
            }

            return NumberFormat.getCurrencyInstance(locale);
    }

}

如果您使用的是Spring,请使用
LocaleContextHolder.getLocale()
而不是
Locale.getDefault()

是否尝试在UI主实例中设置区域设置?奇怪的是,格式设置正确。但是我不能用逗号“34,53”输入值,它们不能转换。只有“34.53”工作正常,然后显示为“34,53€”。Benjamin您使用的是什么语言环境和java版本?可能您必须使用格式。setGroupingUsed(false)我有一个类似的问题。我将1000设置到绑定到BigDecimal值的textfield中,一旦我离开该字段,它就会设置为“1.000”。我还以为是一千,但如果我显示加上BigDecimal.TEN的结果,它会显示11.000。有何线索@JoseLuisMartin?提前谢谢