我是jsf的新手,想知道如何在primefaces数据表中执行数据过滤。我希望当用户开始在搜索文本字段上键入以过滤所有记录并最终在搜索文本字段中保留该值时。如何在jsf数据表中实现这一点我使用的是primefaces 3.5。这是我的数据表和相应的托管bean。
<p:tabView dynamic="true" id="tabview" cache="true" style="min-height: 500px;">
<p:tab title="first Tab">
<h:form >
<p:dataTable paginator="true" value="#{mybean.allusers}" var="user" id="user_table" widgetVar="userTable">
<p:outputPanel>
<h:outputText value="Search all fields:" />
<p:inputText id="globalFilter" onkeyup="PF('userTable').filter()" style="width:150px" placeholder="Enter keyword"/>
</p:outputPanel>
<p:column>
<f:facet name="header">
<h:outputText value="Name"/>
</f:facet>
<h:outputText value="#{user.name}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Id"/>
</f:facet>
<h:outputText value="#{user.id}"/>
</p:column>
</p:dataTable>
</h:form
</p:tab>
</p:tabView >
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
@ManagedBean
@ViewScoped
private List<Users> filteredUsers;
public List<RevenueGroup> getFilteredUsers() {
return filteredGroups;
}
public void setFilteredGroups(List<Users> filteredUsers) {
this.filteredUsers = filteredUsers;
}
public List<Users> getAllusers() {
if(grps==null)
{
grps=UserDao.getUser();
}
return grps;
}
答案 0 :(得分:0)
Primeface提供了内置数据表过滤器。请查看以下链接
<强> DataTable - Filter 强>
请参阅同一页面中的FilterView.java,您可以在其中查看过滤器的实现方式。
另外考虑升级primeface,最新版本为5.3。