LazyDataModel - Load

5 respostas
E

Ao iniciar meu formulario , esta carregando normalmente o Lazy, e entrando normalmente no public List public List load,
porem quando eu escolho qualquer opcao do Radio, ele entra no metodo carregaprestador, porem ele nao entra no public List load.

Alguem pode me ajudar ???

--------------------------------------------------View
                    <p:selectOneRadio id="customRadio" value="#{cadguiaMbean.tipodaconsulta}" rendered="#{cadguiaMbean.validaacessoplano != 2}" >  
                        <f:selectItem itemLabel="#{msg.guiaconsultainter_normal}" itemValue="N"/>  
                        <f:selectItem itemLabel="#{msg.guiaconsultainter_gat}" itemValue="G"/>  
                        <p:ajax event="change" listener="#{cadguiaMbean.carregaprestador(cadguiaMbean.tipodaconsulta)}"  rendered="#{!cadguiaMbean.validacessoprestador}"/> 
                    </p:selectOneRadio>                   

--------------------------------------------------Bean 
    @Override
    public void iniciarView() {
     carregaprestador("S");
   }

    public void carregaprestador(String tipo) {

             if (((tipo.equals("N")) || (tipo.equals("G"))) && validacessoprestador.equals(false)) {
                 cadprestList = null;
             }
        
    
            cadprestList = new LazyDataModel<Cadprest>() {
                @Override
                public List<Cadprest> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, String> filters) {
                    int paginacao;
                    paginacao = 0;
                    String Clausula = "";
                    for (Iterator<String> it = filters.keySet().iterator(); it.hasNext();) {
                        String filterProperty = it.next(); // table column name = field name

                        String filterValue = filters.get(filterProperty);


                        if (filterProperty.equals("codprest")) {
                            Clausula = "where p." + filterProperty + " = " + filterValue;
                        } else {
                            Clausula = "where p." + filterProperty + " like'%" + filterValue + "%'";
                        }
                        paginacao = 1;
                        cadprest = cadprestservico.buscafindCadPrest(first, pageSize, Clausula);

                    }

                    if (paginacao == 0) {
                        cadprest = cadprestservico.buscafindCadPrest(first, pageSize, "");
                    }

                    return cadprest;
                }
            };

            cadprestList.setRowCount(cadprestservico.buscacountCadprestTotal());
          } 
--------------------------------------------------Bean

5 Respostas

B

evandro_araujo , pode mandar como o teu datatable?

O meu LazyDataModel ta parecido com esse seu, mas ele nao popula no datatable.

Ai se puder mandar o seu managedbean completo e o datatable pra eu poder ver o que ta faltando no meu.

E
private LazyDataModel<Cadusu> usuariosList;

    public void carregargridusuario() {

         usuariosList = new LazyDataModel<Cadusu>() {
         @Override
         public List<Cadusu> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, String> filters) {
         int paginacao;
         paginacao = 0;
         for (Iterator<String> it = filters.keySet().iterator(); it.hasNext();) {
         String filterProperty = it.next(); // table column name = field name

         String filterValue = filters.get(filterProperty);

         String Clausula = "and u." + filterProperty + " like'%" + filterValue + "%'";
         paginacao = 1;
         cadusu = cadususervico.buscafindCadusu(first, pageSize, Clausula);

         }

         if (paginacao == 0) {
         cadusu = cadususervico.buscafindCadusu(first, pageSize, "");
         }

         return cadusu;
         }
         };
         usuariosList.setRowCount(cadususervico.buscacountCadusuTotal());
         
       }


                    <p:dataTable id="lazyDataTablenovo1" value="#{analiseauditoriaMb.usuariosList}" var="cadusu" emptyMessage="Nenhum registro encontrado."   
                                 paginator="true" rows="10"  pageLinks="10"  
                                 paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks}   
                                 {NextPageLink} {LastPageLink} Registros por página: {RowsPerPageDropdown}"  
                                 rowsPerPageTemplate="5,10,15,20" lazy="true">
                        <p:column headerText="" styleClass="fonte">                          
                            <h:commandLink action="#{analiseauditoriaMb.selecionaruser(cadusu)}">

                                <!-- <p:graphicImage value="../resources/images/confirmarnew.png"/>-->
                                <p:graphicImage value="../resources/images/confirmarope.png" style="border: 0!important; margin-left: 3px;"/>
                            </h:commandLink>
                        </p:column>

                        <p:column id="cod" filterBy="#{cadusu.codbenef}" 
                                  headerText="Codigo" 
                                  filterMatchMode="contains"    
                                  style="width:4%; font-size:11px;font-family:arial,Tahoma,Sans-serif; padding-left: 5px;"  
                                  >  
                            <h:outputText value="#{cadusu.codbenef}"/>  
                        </p:column>  

                        <p:column
                            id="nome" filterBy="#{cadusu.nomeusu}" 
                            headerText="Codigo" 
                            style="width:40%; font-size:11px;font-family:arial,Tahoma,Sans-serif; padding-left: 5px;"    
                            filterStyle="width:300px;"
                            filterMatchMode="contains">                               
                            <f:facet name="header">Name</f:facet>
                            <h:outputText value="#{cadusu.nomeusu}" />
                        </p:column>

                    </p:dataTable>
B

Cara, como ele vai identificar os filtros? Porque no seu caso os campos de filtro vao ficar no proprio datatable (como no showcase do primefaces http://www.primefaces.org/showcase/ui/datatableLazy.jsf), ne?

Tenho como colocar os filtros em campos separados do datatable?

valeu cara, vou tentar implementar aqui…

E

Os filtros do Lazy, ele pega automatico aqui

for (Iterator<String> it = filters.keySet().iterator(); it.hasNext();) {  
     String filterProperty = it.next(); // table column name = field name  
  
     String filterValue = filters.get(filterProperty);  
  
     String Clausula = "and u." + filterProperty + " like'%" + filterValue + "%'";  
     paginacao = 1;  
     cadusu = cadususervico.buscafindCadusu(first, pageSize, Clausula);  
  
     }
B

evandro_araujo , deu certo o que eu tava querendo implementar.

Valeu cara!

Criado 6 de agosto de 2013
Ultima resposta 15 de fev. de 2014
Respostas 5
Participantes 2