別のテーブルでクリックした内容に基づいて、あるテーブルをフィルタリングする方法を考えていました。たとえば、国テーブルでロシアをクリックすると、名前テーブルでロシア出身のすべての人がフィルター処理されます。vaadin を使用してこれを行う方法を知りたいです。以下に関連するコードをいくつか追加しました。国をクリックすると、国テーブルが名前テーブルをフィルタリングすることになっています。
これが私のフィルター方法です:
public class CountryFilter implements Filter {
public String needle;
public CountryFilter(String needle) {
this.needle = needle;
}
public boolean appliesToProperty(Object id) {
return true;
}
public boolean passesFilter(Object itemId, Item item) {
String haystack = ("" + item.getItemProperty(Name) +
item.getItemProperty(Country)).toLowerCase();
return haystack.contains(needle);
}
}
フィルターを使用する私の検索方法は次のとおりです
public void initCountrySearch() {
country.setSelectable(true);
country.setImmediate(true);
name.setVisibleColumns(new String[] {"name"});
country.setVisibleColumns(new String[] {"country"});
country.addValueChangeListener(new Property.ValueChangeListener() {
public void valueChange(ValueChangeEvent event) {
// TODO Auto-generated method stub
data.name.removeAllContainerFilters();
data.name.addContainerFilter(new CountryFilter(event.getProperty().getValue().toString()));
}
});
}