В настоящее время я работаю над проектом с использованием vaadin .. до сих пор все работает, за исключением локализации абстрактных компонентов выбора (группа опций, выпадающих списков и выпадающих списков и т. Д.), В которых элементы выбора относятся к типам перечислений. Я использовал подход с использованием контейнеров:Локализация vaadin для перечислений
private Container buildFundTransferTypeContainer() {
Container container = new IndexedContainer();
container.addContainerProperty("label", String.class, "");
container.addContainerProperty("value", FundTransferType.class, null);
for (FundTransferType type : FundTransferType.values()) {
Object id = container.addItem();
container.getContainerProperty(id, "label").setValue(
MessageResource.getLocalizedString(type.name()));
container.getContainerProperty(id, "value").setValue(type);
}
return container;
}
то поле устанавливается:
fundTransferTypeField.setContainerDataSource(buildFundTransferTypeContainer());
fundTransferTypeField.setItemCaptionPropertyId("label");
так, что свойство «метка» будет использоваться для отображения. до сих пор это работает с точки зрения отображения локализованных значений в браузере, однако я получаю
com.vaadin.data.Buffered$SourceException
...
Caused by: com.vaadin.data.Buffered$SourceException
at com.vaadin.ui.AbstractField.commit(AbstractField.java:261)
at com.vaadin.ui.Form.commit(Form.java:339)
... 34 more
Caused by: com.vaadin.data.Property$ConversionException: java.lang.NoSuchMethodException: net.novenix.tgsmango.core.enums.FundTransferType.<init>(java.lang.String)
at com.vaadin.data.util.MethodProperty.convertValue(MethodProperty.java:697)
at com.vaadin.data.util.MethodProperty.setValue(MethodProperty.java:666)
at com.vaadin.ui.AbstractField.commit(AbstractField.java:256)
... 35 more
Caused by: java.lang.NoSuchMethodException: com.sample.project.core.enums.FundTransferType.<init>(java.lang.String)
at java.lang.Class.getConstructor0(Class.java:2706)
at java.lang.Class.getConstructor(Class.java:1657)
at com.vaadin.data.util.MethodProperty.convertValue(MethodProperty.java:690)
... 37 more
при фиксации называется на форме. Как следует обрабатывать локализованные значения для этих компонентов vaadin. Спасибо за ответы
Так оно работает, если вы не локализуете ярлык «Строки»? Можете ли вы показать мне свое определение FundTransferType? – miq
Для этого вам нужен ваш класс FundTransferType. Стек-стек, кажется, указывает на ошибку в этом классе – Marthin
Спасибо за ваши ответы .. я смог решить эту проблему некоторое время назад. и я сделал это, добавив фактическое enum (field.addItem (enum1)), а затем установил заголовок элемента с локализованной строкой (field.setItemCaption (enum1, Localizer.localize (enum1.name())) .. снова спасибо много. – geneqew