我是java组件基础框架中的新东西,尤其是vaadin。 在使用这个框架之前,我正在使用struts 2.
所以当我想查询一些表时,我有一个搜索框,包含很多文本字段。当用户点击搜索按钮时,texfield中的参数将直接使用http post发送到我的hibernate。
我的问题,如何使用vaadin过滤输出?
答案 0 :(得分:3)
只需使用新数据更新BeanContainer即可。这是我的代码的一个例子
public void refreshTableData() {
getBeanContainer().removeAllItems();
List<Customer> customers = customerDao.getByCustomerFilter(getCustomerFilterForm().getFilterItem().getBean());
getBeanContainer().addAll(customers);
}
其中 CustomerFilter 是一个包含所有搜索条件数据的bean,我在之前的表单中填充它(例如使用组合框),beanContainer是我的表容器数据源。
答案 1 :(得分: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);
答案 2 :(得分:0)
这是我使用用户使用textfield输入的文本过滤行的解决方案:
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 +"%"));
}
}
});
我希望代码是自我规划的。