[英]Filtering a primefaces datatable?
我正在嘗試為一個dataTable創建一個過濾器。 我希望該過濾器可以與數據表中包含的所有關鍵字一起使用。
我正在以下示例中: http : //www.primefaces.org/showcase/ui/data/datatable/filter.xhtml,但我無法做到這一點。
問題是當我用任何關鍵字輸入時,dataTable都清晰可見,顯示消息“未找到關鍵字”,如果我刪除關鍵字,所有結果都不會返回,並且消息“未找到關鍵字”保持不變。
我怎么解決這個問題 ?
這是我的嘗試。
XHTML
<p:dataTable id="tabelaAlunos" widgetVar="tableAlunos"
value="#{alunoMB.alunos}" var="x"
emptyMessage="No keyword found"
selectionMode="single"
selection="#{matriculaMB.aluno}"
rowKey="#{x.id}"
filteredValue="#{alunoMB.alunos}"
>
<f:facet name="header">
<p:outputPanel>
<h:outputText value="Filtrar: " />
<p:inputText id="globalFilter"
onkeyup="PF('tableAlunos').filter()"
style="width:150px" placeholder="Filtro"/>
</p:outputPanel>
</f:facet>
<p:column headerText="Nome">
<h:outputText value="#{x.nome}"/>
</p:column>
<p:column headerText="Sobrenome">
<h:outputText value="#{x.sobreNome}"/>
</p:column>
<p:column headerText="Endereço">
<h:outputText value="#{x.endereco.endereco}"/>
</p:column>
<p:column headerText="Número">
<h:outputText value="#{x.endereco.numero}"/>
</p:column>
<p:column headerText="Cidade">
<h:outputText value="#{x.endereco.cidade}"/>
</p:column>
<p:column headerText="Bairro">
<h:outputText value="#{x.endereco.bairro}"/>
</p:column>
<p:column headerText="Unidade escolar">
<h:outputText value="#{x.unidadeEscolar.nome}"/>
</p:column>
</p:dataTable>
托管豆阿魯諾
@ManagedBean
@ViewScoped
public class AlunoMB implements Serializable{
private static final long serialVersionUID = 1L;
private Aluno bean;
private GenericDAO<Aluno> dao;
private List<Aluno> alunos = null;
private String[] sexo = {"M", "F"};
private String telefone = "";
/** persiste o objeto */
public void insert(Aluno a){
dao = new GenericDAO<Aluno>(Aluno.class);
dao.insert(a);
alunos.add(a);
bean = new Aluno();
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Sucesso" ,"Cadastro realizado com sucesso!"));
}
/** altera o objeto */
public void update(Aluno a){
dao = new GenericDAO<Aluno>(Aluno.class);
dao.update(a);
}
/** prepara para inserir o objeto */
public void prepareCreate(){
bean = new Aluno();
}
/** retorna o objeto */
public Aluno getBean() {
return bean;
}
/** define o objeto */
public void setBean(Aluno bean) {
this.bean = bean;
}
/** retorna uma lista do objeto */
public List<Aluno> getAlunos() {
if(alunos == null){
dao = new GenericDAO<Aluno>(Aluno.class);
alunos = dao.findAll();
}
return alunos;
}
/** seta uma lista do objeto */
public void setAlunos(List<Aluno> alunos) {
this.alunos = alunos;
}
托管豆基質
@ManagedBean
@ViewScoped
public class MatriculaMB implements Serializable{
private static final long serialVersionUID = 1L;
private Matricula bean = new Matricula();
private GenericDAO<Matricula> dao;
private List<Matricula> matriculas = null;
private Turma turma;
private Aluno aluno = null;
/** persiste um novo objeto */
public void insert(Matricula m){
dao = new GenericDAO<Matricula>(Matricula.class);
dao.insert(m);
matriculas.add(m);
bean = new Matricula();
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Sucesso" ,"Cadastro realizado com sucesso!"));
}
/** altera o objeto existente */
public void update(Matricula m){
dao = new GenericDAO<Matricula>(Matricula.class);
dao.update(m);
}
/** prepara para inserir uma nova matricula */
public void prepareCreate(){
bean = new Matricula();
}
/** retorna o objeto */
public Matricula getBean() {
return bean;
}
/** define o objeto */
public void setBean(Matricula bean) {
this.bean = bean;
}
/** retorna uma lista do objeto */
public List<Matricula> getMatriculas() {
dao = new GenericDAO<Matricula>(Matricula.class);
if(matriculas == null){
matriculas = dao.findAll();
}
return matriculas;
}
public Turma getTurma() {
return turma;
}
public void setTurma(Turma turma) {
this.turma = turma;
}
/** adiciona turma ao aluno */
public void addTurmaAluno(){
if(!bean.getAluno().getTurmas().contains(turma)){
bean.getAluno().addTurmas(this.turma);
}
}
public Aluno getAluno() {
return aluno;
}
public void setAluno(Aluno aluno) {
this.aluno = aluno;
bean.setAluno(this.aluno);
}
只需為每列添加一個filteBy。
<p:column headerText="Nome" filterBy="#{x.nome}">
<h:outputText value="#{x.nome}"/>
</p:column>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.