1
我有一个orderBy工作,但我的FilterBy什么都不做。症状:没有消息,并且所有行仍显示出来。列过滤器和全局过滤器都不起作用。有时在过滤器框中键入将导致表按其原始顺序(刷新页面后)重新加载。Primefaces 4.0 datatable过滤器不过滤数据
该项目使用JPA 2.0,EJB 3.0,PrimeFaces 4.0,Facelets。我的UserDAO扩展了一个抽象的DAOService。
任何帮助将不胜感激。
我查看了Primefaces 4.0文档和Primefaces网站的DataTable filterBy示例;我也搜索过StackOverflow和谷歌。我无法弄清楚我出错的地方。
XHTML页面:
<!-- Define Facelet Template -->
<ui:composition template="/WEB-INF/templates/template.xhtml">
<!-- Header defined in template -->
<!-- Body overrides template -->
<ui:define name="content">
<f:view>
<h:body>
<h:outputStylesheet name="css/styles.css" />
<p:dataTable id="dataTable" widgetVar="usersTable" var="user"
value="#{users.all}" emptyMessage="none found"
filteredValue="#{users.filteredUsers}" editable="true"
editMode="cell" rowKey="user.id">
<f:facet name="header">
<p:outputPanel>
<h:outputText value="Search all fields:" />
<p:inputText id="globalFilter" onkeyup="usersTable.filter()"
style="width:150px" />
</p:outputPanel>
<!-- <h:outputText>Users</h:outputText> -->
</f:facet>
<p:column id="idColumn" headerText="ID" sortBy="id"
filterBy="#{user.id}">
Edit: I have also tried filterBy="id" to no avail.
<h:outputText value="#{user.id}" />
</p:column>
... more columns like that ...
<f:facet name="footer">This is a footer</f:facet>
</p:dataTable>
</h:body>
</f:view>
</ui:define>
<!-- Footer defined in template -->
</ui:composition>
UserController.java:
import java.io.Serializable;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import model.security.dao.UserDAORemote;
import model.security.jpa.TSEC_User;
//Accessible to jsf page as "users"
@ManagedBean(name="users")
@SessionScoped
public class UserController implements Serializable {
private static final long serialVersionUID = 1L;
@EJB // // Injects the UserDAO session bean using the @EJB annotation
UserDAORemote model;
private List<TSEC_User> all;
private List<TSEC_User> filteredUsers;
public UserController() {}
@PostConstruct
public void init() {
all = model.find();
}
public List<TSEC_User> getAll() {
return all;
}
public void setAll(List<TSEC_User> all) {
this.all = all;
}
public List<TSEC_User> getFilteredUsers() {
return filteredUsers;
}
public void setFilteredUsers(List<TSEC_User> filteredUsers) {
this.filteredUsers = filteredUsers;
}
}
找到了答案,但我没有足够的信誉来回答我的问题。我的template.xhtml文件使用
和标签代替