在我的JSF 2.2,Primefaces 5.3网络应用程序中,我希望用户访问具有预定义过滤器状态的视图(例如,取决于他的用户帐户)
为实现这一目标,我尝试以编程方式将过滤器应用于dataTable(即来自辅助bean)。
在我的支持bean中,我尝试过:
@ManagedBean
@ViewScoped
public class MyCointroller
private DataTable dataTable = new DataTable();
@PostConstruct
public void init() {
Map<String, Object> myFilter = new HashMap<String, Object>();
myFilter.put("userName", "Peter");
dataTable.setFilters(myFilter);
}
我使用&#34;绑定&#34;在我的facelet中使用dataTable。
<p:dataTable var=user"
value="#{myController.users}"
binding="#{myController.dataTable}">
<p:column headerText="Bezeichnung"
filterMatchMode="contains" filterBy="#{user.name}">
<h:outputText value="#{user.name}" />
</p:column>
绑定本身有效,我可以从我的支持bean读取应用的过滤器,但是我无法将myFilter
应用于dataTable(表格在视图中没有被过滤)。
答案 0 :(得分:2)
您应该在页面加载时在javascript中触发过滤器操作。
尝试为您的dataTable widgetVar="userTable"
添加widgetVar属性,并将此javascript代码添加到您的xhtml页面:
<script>
$(document).ready(function () {
PF('userTable').filter()
}
</script>