【问题标题】:Programmatically apply filter to PrimeFaces 5 DataTable以编程方式将过滤器应用于 PrimeFaces 5 DataTable
【发布时间】:2016-03-10 12:58:31
【问题描述】:

在我的 JSF 2.2 Primefaces 5.3 Web 应用程序中,我希望用户访问具有预定义过滤器状态的视图(例如,取决于他的用户帐户)

为了实现这一点,我尝试以编程方式将过滤器应用于数据表(即来自支持 bean)。

在我的 backing 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);
}

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

【问题讨论】:

  • myController.user是什么类型?
  • 抱歉,打错字了,应该是“用户”。 myController.users 是一个 ArrayList

标签: jsf primefaces


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-18
    • 2011-08-13
    • 2022-12-28
    • 1970-01-01
    • 2014-11-10
    • 1970-01-01
    • 1970-01-01
    • 2011-10-18
    相关资源
    最近更新 更多