Ssv*_*Ssv 6 jsf primefaces jsf-2
我正在使用primefaces v3.5.在数据表中我在一列上使用过滤器.如何在加载页面时为过滤器设置默认值.
aca*_*uci 10
在primefaces中使用column标记的filterValue属性,例如
<p:datatable ... widgetVar="dataTableWidgetVar">
<p:column ... filterValue="#{BackingBean.defaultValue}">
Run Code Online (Sandbox Code Playgroud)
然后,当页面准备就绪时,在javascript中创建一个简单的函数调用来触发过滤器(小部件变量是通过PF中的jQuery创建的):
<script type="text/javascript" target="body">
$j = jQuery;
$j(document).ready( function() {
dataTableWidgetVar.filter();
});
</script>
Run Code Online (Sandbox Code Playgroud)
Pav*_*dek 10
正确的解决方案是使用其filteredValue属性p:dataTable包含已过滤的集合以及filterValue属性,p:column以向用户显示过滤器配置.
要将p:dataTable过滤器保存在会话bean中,您还必须保留过滤后的数据.该p:dataTable不会对你进行初步排序.
检查这个例子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>
Run Code Online (Sandbox Code Playgroud)
支持这个托管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;
}
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,获取对数据表的引用(通过将视图数据表绑定到支持 bean 表示或遍历 DOM 树)并执行此操作
Map<String,String> theFilterValues = new HashMap<String,String>();
theFilterValues.put("filterColumn","fooValue");
myDataTable.setFilters(theFilterValues);
Run Code Online (Sandbox Code Playgroud)
将设置默认文本值,但可能不应用过滤器。
或者, primefaces 问题队列中的这篇文章建议使用基于 jquery 的选项
<script>
jQuery(document).ready(function() {
jQuery('input[id*="datumCol"]').val('2012-07-17');
});
</script>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22410 次 |
| 最近记录: |