3

私はJavaコンポーネントベースフレームワーク、特にvaadinの新機能です。このフレームワークを使用する前に、struts 2 を使用しています。

そのため、いくつかのテーブルをクエリしたい場合、検索ボックスがあり、多くのテキストフィールドが含まれています。ユーザーが [検索] ボタンをクリックすると、texfield のパラメーターが http ポストを使用して休止状態に直接送信されます。

私の質問、vaadin を使用して出力をフィルタリングする方法は?

4

3 に答える 3

3

BeanContainer を新しいデータで更新するだけです。これが私のコードの例です

public void refreshTableData() {
    getBeanContainer().removeAllItems();
    List<Customer> customers = customerDao.getByCustomerFilter(getCustomerFilterForm().getFilterItem().getBean());
    getBeanContainer().addAll(customers);
}

ここで、 CustomerFilterはすべての検索基準データを含む Bean であり、以前にフォーム内に (コンボボックスなどで) 入力し、beanContainer はテーブル コンテナー データ ソースです。

于 2012-11-19T08:43:36.987 に答える
0

これは、テキストフィールドを使用してユーザーが入力したテキストを使用して行をフィルタリングする私のソリューションです:

textField.addTextChangeListener(new TextChangeListener() {

            @Override
            public void textChange(TextChangeEvent event) {
                Filterable filter= (Filterable) (table.getContainerDataSource());
                filter.removeAllContainerFilters();

                String filterString = event.getText();
                if (filterString.length() > 0) {
                    filter.addContainerFilter(new Like("columnName", "%"+filterString +"%"));
                }

            }
        });

コードが自明であることを願っています。

于 2016-01-13T16:31:36.743 に答える
0
filterString = checkBox.getValue().toString();
Filterable f = (Filterable)(table.getContainerDataSource());
        if(filters==null)
            filters=new TreeMap<Object, SimpleStringFilter>();
        SimpleStringFilter filter=filters.remove(propertyId);
            if (filter != null){
                f.removeContainerFilter(filter);
            }
            filter = new SimpleStringFilter(propertyId, filterString, ignoreCase, onlyMatchPrefix);
        filters.put(propertyId, filter);
        f.addContainerFilter(filter);
于 2015-02-11T03:38:42.703 に答える