私はVaadin(7.10)アプリを使っていますが、いくつかの点では、コンテナに「特別な」ネストされたプロパティを追加する必要があります。アプリケーションのために、BeanItemContainer
とGridを使用しています。私は別のPOJOのList
を格納するクラスを持っています、そして、私はそれらの2番目のPOJOの中で1つのプロパティを使ってグリッドをフィルタリングする必要があります。設定の基本的な例は、次のようになります。Vaadin 7 Gridにフィルタリングしたネストされた複合プロパティを追加するには?
public class A {
private String property1;
private String property2;
//There are too getters and setters for this two properties
}
public class B { //This class stores a list of As
private String name;
private List<A> list;
//Getters and setters too
}
これらは私がデータを保存するのに使う2つの基本的なクラスです。データを表示するVaadinコードは次のようになります。
Grid grid = new Grid();
BeanItemContainer<B> container = new BeanItemContainer<>(B.class);
//////////////
container.addNestedContainerProperty("list.property1");
//This OBVIOUSLY doesn't work, because property1 is not part of List
/////////////
grid.setColumns("name");
grid.setContainerDataSource(container);
だから、私の質問は次のとおりです。
がBeanItemContainer
から変更することなく、このproperty1
Grid
に表示することは可能ですか?
この方法の問題は、生成された列がフィルタリングを許可しないことです。これは**答えに**記載されている必要があります。もっと強調するために編集します。 – Shirkam
@Shirkamさて、私は古いプロジェクトを掘り起こす必要があります。私はこれが何とか解決されたと感じています。 'GeneratedPropertyContainer.addContainerFilter'を使うと' UnsupportedFilterException'がスローされたのですか、なぜ許可されないのですか? – pirho
うん、それは 'UnsupportedFilterException'をスローする – Shirkam