現在、vaadin ..を使用しているプロジェクトで作業しています。選択項目は列挙型からの抽象的な選択コンポーネント(オプショングループ、コンボボックス、ドロップダウンなど)のローカライズ以外はすべて動作しています。私はコンテナを使用してのアプローチを使用:プロパティ「標識」の表示に使用されるようにenumのためのvaadinのローカライゼーション
fundTransferTypeField.setContainerDataSource(buildFundTransferTypeContainer());
fundTransferTypeField.setItemCaptionPropertyId("label");
:そのフィールドがで設定されている
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;
}
。これまでのところ、これはブラウザでローカライズされた値を表示するという点で動作しているコミットをフォームに呼び出されたときに、しかし、私は
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