2014-09-11 3 views
0

하나의 dataTable에 필터를 만들려고합니다. 해당 필터를 datatable에 포함 된 모든 키워드와 함께 사용할 수 있습니다.primefaces 데이터 테이블 필터링?

다음 예제는 다음과 같습니다. http://www.primefaces.org/showcase/ui/data/datatable/filter.xhtml 하지만이 작업을 수행 할 수 없습니다.

문제는 "모든 키워드를 찾을 수 없습니다"라는 메시지를 표시하는 모든 키워드를 입력 할 때입니다. 키워드를 삭제하면 모든 결과가 반환되지 않고 "키워드를 찾을 수 없습니다"라는 메시지가 유지됩니다.

이 문제를 어떻게 해결할 수 있습니까?

여기 내가 어떻게 노력하고 있는지.

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> 

관리 빈 Aluno

@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); 
    } 
+1

가 보이는 ... – Yamada

+0

감사합니다 친구는 지금 작동합니다! – FernandoPaiva

답변

1
J

각 열에 filteBy를 추가하십시오. 각 열에서 filterBy 누락처럼

<p:column headerText="Nome" filterBy="#{x.nome}"> 
    <h:outputText value="#{x.nome}"/> 
</p:column> 
관련 문제