Vaadin свойство форматера на форме - PullRequest
1 голос
/ 11 июля 2011

У меня есть форма, где свойство исходного элемента должно быть отформатировано в произвольном формате.

Свойство источника (моего собственного компонента) имеет значение Integer, но его необходимо отформатировать какВалютоподобный формат.

Я попытался реализовать свой собственный PropertyFormatter и настроить его внутри моего FieldFactory.createField для этой формы как

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

Но, как я вижу из журналов,вызывается только format() метод.Но метод parse() никогда не используется, а setValue никогда не вызывается

Что не так с моим кодом?Как использовать пользовательский PropertyFomatter для форм?Или как добавить пользовательский формат для поля формы?


После некоторого исследования я обнаружил, что что-то просто заменяет мой форматер новым источником данных MethodProperty.Так что я реализовал свой собственный PriceField с переопределенным setPropertyDataSource, который исправляет эту ситуацию.Кстати, кажется, что он хакерский, и я все еще ищу другой путь

1 Ответ

1 голос
/ 11 августа 2011

Я также испытал эту проблему и решил ее по-другому. На самом деле я также должен был сделать текстовое поле с валютой: -)

Проблема заключается в том, что источник данных в PropertyFormatter является нулевым во время создания полей в FormFieldFactory. Вместо этого вы можете установить источник данных в своем поле после вызова FormFieldFactory:

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

Так что, к сожалению, с Vaadin вы не можете создать TextField, который устанавливает собственный форматер.

...