在primefaces数据表过滤器中设置默认值 [英] setting default value in primefaces datatable Filter
问题描述
我使用的是primefaces v3.5,在数据表上我使用的是一列过滤器. 加载页面本身时,如何为过滤器设置默认值.
I am using primefaces v3.5.On the datatable I am using filter on one column. How can I set a default value to the filter while loading the page Itself.
推荐答案
正确的解决方案是使用p:dataTable
的filteredValue
属性,其中包含过滤后的集合以及p:column
的filterValue
属性,以显示向用户过滤配置.
The correct solution is to use the filteredValue
attribute of p:dataTable
which contains the filtered collection together with filterValue
attribute of p:column
to show the filters configuration to the user.
要将p:dataTable
过滤器存储在会话bean中,还必须保留过滤的数据. p:dataTable
不会为您执行初始排序.
To keep your p:dataTable
filters stored in your session bean, you have to keep also the filtered data. The p:dataTable
wouldn't perform the initial sorting for you.
检查此示例JSF:
<p:dataTable
value="#{usersBean.employees}"
var="e"
filteredValue="#{userListState.filteredValue}">
<p:ajax event="filter" listener="#{userListState.onFilterChange}"/>
<p:column
headerText="user"
filterBy="#{e.user.id}"
filterValue="#{userListState.filterState('user.id')}">
#{e.user.id}
</p:column>
</p:dataTable>
以该托管bean为后盾:
Backed with this managed bean:
@Named(value = "userListState")
@SessionScoped
public class UserListState implements Serializable{
private Map<String, String> filterState = new HashMap<String, String>();
private List<Employee> filteredValue;
public UserListState() {
}
public void onFilterChange(FilterEvent filterEvent) {
filterState = filterEvent.getFilters();
filteredValue =(List<Employee>) filterEvent.getData();
}
public String filterState(String column) {
return filterState.get(column);
}
public List<Employee> getFilteredValue() {
return filteredValue;
}
public void setFilteredValue(List<Employee> filteredValue) {
this.filteredValue = filteredValue;
}
}
这篇关于在primefaces数据表过滤器中设置默认值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!