java - 如何在以货币样式格式化的 Vaadin 文本或数字字段中显示数字?

标签 java spring-boot vaadin

我只想要一个可编辑字段将数字显示为货币,例如

1.444.444,90 

我已经检查过NumeralFieldFormatter但是当我将它与构造函数或生成器一起使用时。没关系,它总是给我类似 20000.0 的东西

NumeralFieldFormatter currencyOne = new NumeralFieldFormatter.Builder()
                .decimalMark(",")
                .decimalScale(2)
                .delimiter(".")
                .thousandsGroupStyle(NumeralFieldFormatter.ThousandsGroupStyle.THOUSAND)
                .build();
currencyOne.extend(textfield);

我做错了什么或者vaadin有更好的可能性吗?这么大的框架怎么可能没有内置任何货币,或者我根本找不到它?

提前致谢

最佳答案

您可以将 Binder 与转换器一起使用:

public class HelloWorldView extends VerticalLayout {

    private final DecimalFormat decimalFormate = new DecimalFormat("###,###,###.00");

    public HelloWorldView() {
        Binder<Person> binder = new Binder<>(Person.class);

        TextField name = new TextField("Name");
        binder.forField(name)
                .bind("name");

        TextField salary = new TextField("Salary");
        binder.forField(salary)
                .withConverter(new Converter<String, BigDecimal>() {
                    @Override
                    public Result<BigDecimal> convertToModel(String value, ValueContext context) {
                        if (value == null || value.length() == 0) {
                            return Result.ok(new BigDecimal(0));
                        } else {
                            return Result.ok(new BigDecimal(value));
                        }
                    }

                    @Override
                    public String convertToPresentation(BigDecimal value, ValueContext context) {
                        if (value == null) {
                            return "";
                        } else {
                            return decimalFormate.format(value);
                        }
                    }
                })
                .bind("salary");

        binder.setBean(new Person());

        add(name, salary);
    }

请在此处找到整个示例: https://github.com/simasch/vaadin-formatting

关于java - 如何在以货币样式格式化的 Vaadin 文本或数字字段中显示数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73123859/

相关文章:

spring-boot - 如何使用 SLF4J 排除特定记录器的特定类

javascript - Spring PostMapping 接收具有空值的对象

java - Vaadin 多语言 portlet 组件标题

java - 如何根据另一个列值的变化更改生成列中选择的选定值

java - vaadin视频组件是否支持preload属性

java - 应用程序图标没有跟随导出的项目?

java - JSR 2.0 注释不会被实现继承

Java HttpClient NoSuchAlgorithmException

java - jar 找不到方法的符号(但找到了其他类方法)?

Spring Boot 在集成测试期间不解析 application.properties 中的自定义属性