以编程方式将过滤器应用于PrimeFaces 5 DataTable

时间:2016-03-10 12:58:31

标签: jsf primefaces

在我的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(表格在视图中没有被过滤)。

1 个答案:

答案 0 :(得分:2)

您应该在页面加载时在javascript中触发过滤器操作。 尝试为您的dataTable widgetVar="userTable"添加widgetVar属性,并将此javascript代码添加到您的xhtml页面:

<script>
        $(document).ready(function () {
            PF('userTable').filter()
        }
</script>