Vaadin表格上的属性格式化程序

时间:2011-07-11 07:53:48

标签: java vaadin

我有一个表格,其中源项目的属性需要通过自定义格式格式化。

源属性(我自己的bean)是Integer,但需要格式化为类似于货币的格式。

我尝试实现自己的PropertyFormatter,并在FieldFactory.createField内为此表单设置

TextField tf = new TextField("Price");
tf.setPropertyDataSource(new MyPriceFormatter());
return tf;

但是从日志中可以看出,只调用format()方法。但是从不使用parse()方法,并且永远不会调用setValue

我的代码出了什么问题?如何使用自定义PropertyFomatter表单?或者如何为表单字段添加自定义格式?


经过一些调查后,我发现有一些东西只是用一个新的MethodProperty数据源替换了我的格式化程序。所以我实现了我自己的PriceField,并覆盖了setPropertyDataSource,以解决这种情况。顺便说一句,它看起来像是hacky,我还在寻找另一种方式

1 个答案:

答案 0 :(得分:1)

我也经历过这个问题并以另一种方式解决了。实际上我还必须用货币格式化文本字段: - )

问题是,在FormFieldFactory中创建字段时,PropertyFormatter中的数据源为null。您可以在调用FormFieldFactory之后在字段上设置数据源:

addCountryRatesForm.setFormFieldFactory(new MyFormFieldFactory());
Field internationalRate = addCountryRatesForm.getField("internationalRate");
internationalRate.setPropertyDataSource(new CurrencyFormatter("#0.00 ", currency, internationalRate.getPropertyDataSource()));

不幸的是,Vaadin无法创建一个设置自己的格式化程序的TextField。