大家好,我的数据表有问题我想过滤它,但是如果我把一些东西放到文本字段中没有显示任何内容,如果我清除输入也没有。 如果我在一列中有多个陈述,这是可能的吗?
所以我使用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>
答案 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。但它只过滤了列中的第一个语句。