Primefaces过滤数据表

时间:2014-02-04 22:05:09

标签: jsf primefaces

大家好,我的数据表有问题我想过滤它,但是如果我把一些东西放到文本字段中没有显示任何内容,如果我清除输入也没有。 如果我在一列中有多个陈述,这是可能的吗?

所以我使用primefaces 3.5和jsf 2.1

以下是代码,如果您需要更多代码发表评论。 THX

<p:dataTable id="inboxTable" var="task" value="#{taskboxBean.taskboxInboxList}" paginator="true"
            widgetVar="inboxTable" rows="10" selection="#{taskboxBean.selectedTaskbox}"
            selectionMode="single" rowKey="#{task.ID}" emptyMessage="" paginatorPosition="bottom"
            filteredValue="#{taskboxBean.inboxList}">

            <p:ajax event="rowSelect" update=":contentForm, :postForm:tabViewPosts:inboxTable"
                listener="#{taskboxBean.onTaskboxRowSelect}" />

            <f:facet name="header">  

                <p:outputPanel>
                    <h:outputText value="Suchen:" />
                    <p:inputText id="globalFilter" onkeyup="inboxTable.filter()"
                        style="margin-left:5px;width:150px" />
                </p:outputPanel>
            </f:facet>

            <p:column headerText="Post">
                <h:outputText
                    value="#{task.FROM_USER.FIRST_NAME} #{task.FROM_USER.LAST_NAME} (#{task.FROM_USER.EMAIL})" />
                <div align="right">
                    <h:panelGroup rendered="#{!task.IS_SEEN}" class="fa fa-envelope fa-2x" />
                    <h:panelGroup rendered="#{task.IS_SEEN}" class="fa fa-envelope-o fa-2x" />
                </div>
                <h:outputText value="#{task.TASKTYPE.NAME}" />
                <br />
                <h:outputText value="#{task.CREATE_TIMESTAMP}" />
            </p:column>

        </p:dataTable>

2 个答案:

答案 0 :(得分:2)

没有在文档中明确写出,但正如PrimeFaces forum所述,您需要在要通过全局过滤器进行搜索的列上声明filterBy属性。

如果您不希望在各列上显示过滤器,也建议在此处添加filterStyle="display:none"

文档中的示例包含filterBy

<p:dataTable var="car" value="#{carBean.cars}"
        filteredValue="#{carBean.filteredCars}" widgetVar="carsTable">
    <f:facet name="header">
        <p:outputPanel>
            <h:outputText value="Search all fields:" />
            <h:inputText id="globalFilter" onkeyup="carsTable.filter()" />
        </p:outputPanel>
    </f:facet>
        <p:column filterBy="#{car.model}" headerText="Model" filterMatchMode="contains">
            <h:outputText value="#{car.model}" />
        </p:column>
</p:dataTable>

然而,正如PrimeFaces文档的典型情况一样,如果没有filterBy,它就无法工作。

答案 1 :(得分:0)

您必须在taskboxInboxList课程中添加taskboxBean的getter和setter。但它只过滤了列中的第一个语句。