현재 vaadin ..을 사용하는 프로젝트에서 작업 중입니다. 선택 항목이 enum 유형에서 오는 추상 선택 구성 요소 (옵션 그룹, 콤보 박스, 드롭 다운 등)를 제외한 모든 것이 작동합니다. 다음 필드가 설정되어enums에 대한 현지화
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 클래스가 필요합니다. stacktrace는 해당 클래스의 오류를 가리키는 것 같습니다 – Marthin
답장을 보내 주셔서 감사합니다. 나는 얼마 전이 문제를 해결할 수있었습니다. 그리고 실제 enum (field.addItem (enum1))을 추가 한 다음 지역화 된 문자열 (item.setItemCaption (enum1, Localizer.localize (enum1.name())))로 항목 캡션을 설정하면됩니다. 제비. – geneqew