如何在SAME页面的<p:datatable>中显示搜索结果?

时间:2015-09-17 21:49:32

标签: ajax search primefaces datatables

我是Java EE 7中的新手,我使用DAO模式开发Java EE7应用程序(JPA,EJB,JSF-Primefaces)

我有一个带有2个标签的p:tabView,如下图所示。

enter image description here

我希望在p:DataTable中显示搜索结果(当用户按下搜索按钮时),两者都在相同的页面中。

我尝试了,但是使用p:ajax

我有各种错误 你能帮帮我吗?

1 个答案:

答案 0 :(得分:0)

我正在练习这个练习,在我的代码下面: 我的观点XHTML

<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:h="http://xmlns.jcp.org/jsf/html"
  xmlns:p="http://primefaces.org/ui"
  xmlns:f="http://xmlns.jcp.org/jsf/core"
  xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
<h:head>
    <h:outputStylesheet library="css" name="style.css" />
    <title>Creditos</title>
</h:head>
<body>
    <ui:composition template="./../views/template.xhtml">            
        <ui:define name="content">
            <h:form>
                <p:panelGrid columns="2">
                    <p:outputLabel value="Fecha Inicio:"/>
                    <p:calendar navigator="true" value="#{creditoBean.fecha1}"/>
                    <p:outputLabel value="Fecha Fin:"/>
                    <p:calendar navigator="true" value="#{creditoBean.fecha2}"/>
                    <p:commandButton value="Cargar" actionListener="#{creditoBean.filtrarFechas()}"
                                     update=":formMostrar"/>
                </p:panelGrid>
                <p:panelGrid columns="2">
                    <p:outputLabel value="Ingrese DNI o RUC:"/>
                    <p:inputMask mask="9?9999999999" maxlength="11" value="#{creditoBean.dni}"/>                       
                    <p:commandButton value="Buscar" actionListener="#{creditoBean.cargarAnexoDNI()}"
                                     ajax="false"/>
                </p:panelGrid>
            </h:form>
            <h:form id="formMostrar">
                <p:dataTable var="cred" value="#{creditoBean.filtradafecha}" 
                             emptyMessage="No hay nada para mostrar" 
                             paginator="true" rows="20" paginatorPosition="top" 
                             paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} 
                             {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" 
                             rowsPerPageTemplate="20">
                    <p:column headerText="Cod.">
                        <h:outputText value="#{cred.liqventa}" />
                    </p:column>
                    <p:column headerText="Nombres">
                        <h:outputText value="#{cred.anexoByIdanexo.nombres}" />
                    </p:column>                        
                    <p:column headerText="Tienda" filterBy="#{cred.tienda}" filterMatchMode="contains">
                        <h:outputText value="#{cred.tienda}">
                            <f:converter converterId="tiendaconverter"/>
                        </h:outputText>
                    </p:column>
                    <p:column headerText="Empresa" filterBy="#{cred.empresa}" filterMatchMode="contains">
                        <h:outputText value="#{cred.empresa}">
                            <f:converter converterId="empresaconverter"/>
                        </h:outputText>
                    </p:column>
                    <p:column headerText="Vehículo">
                        <h:outputText value="#{cred.vehiculo.tipovehiculo}">
                            <f:converter converterId="tvehiculo"/>
                        </h:outputText>
                    </p:column>
                    <p:column headerText="Deuda">
                        <h:outputText value="#{cred.totaldeuda}" />
                    </p:column>
                    <p:column headerText="Cargar">                            
                        <p:commandButton value="C" /*Here charge the table */ update=":formModificar" 
                                         actionListener="#{creditoBean.cargarLetras()}" onclick="$('#tablaletras').show();"/>
                    </p:column>
                    <p:column headerText=" ">
                        <p:commandButton icon="b-delete" oncomplete="dlgeliminar.show()" update=":formEliminar">
                            <f:setPropertyActionListener target="#{creditoBean.credito}" value="#{cred}" />
                        </p:commandButton>
                    </p:column>
                </p:dataTable>
            </h:form>
            <div id="tablaletras" class="campo">
                <h:form id="formModificar">
                    <p:dataTable var="letras" value="#{creditoBean.letraslista}" 
                                 emptyMessage="No hay nada para mostrar">
                        <p:inputText type="hidden" value="#{letras.idletras}"/>
                        <p:column headerText="Cod venta.">
                            <h:outputText value="#{letras.credito.liqventa}" />
                        </p:column>
                        <p:column headerText="Descripcion">
                            <h:outputText value="#{letras.descripcion}"/>
                        </p:column>
                        <p:column headerText="Monto">
                            <h:outputText value="#{letras.montoletra}"/>
                        </p:column>
                        <p:column headerText="Interes">
                            <h:outputText value="#{letras.interes}"/>
                        </p:column>
                        <p:column headerText="Total Letra">
                            <h:outputText value="#{letras.monto}"/>
                        </p:column>
                        <p:column headerText="Fecha In.">
                            <h:outputText value="#{letras.fecini}">
                                <f:convertDateTime/>
                            </h:outputText>
                        </p:column>
                        <p:column headerText="Fecha Ven.">
                            <h:outputText value="#{letras.fecven}">
                                <f:convertDateTime/>
                            </h:outputText>
                        </p:column>
                        <p:column headerText="Saldo">
                            <h:outputText value="#{letras.saldo}"/>
                        </p:column>
                        <p:column headerText="Estado">
                            <h:outputText value="#{letras.estado}">
                                <f:converter converterId="letrasconverter"/>
                            </h:outputText>
                        </p:column>                        
                        <p:column headerText="Pagar">                                
                            <p:commandButton oncomplete="dlgpagar.show()" value="P" update=":formPagar"
                                             actionListener="#{pagosBean.cargarLetra(letras)}"/>
                        </p:column>
                    </p:dataTable>
                    <p:commandButton value="Nota de Débito" icon="b-add" update=":formPagar"
                                     oncomplete="dlgnotadebito.show()" />
                </h:form>
            </div>
            <p:dialog id="dlg1" header="Ingrese los datos" showEffect="explode" hideEffect="explode" 
                      widgetVar="dlgpagar" modal="true" resizable="false" minWidth="200">
                <h:form id="formPagar">
                    <p:panelGrid columns="4">
                        <p:outputLabel value="Fecha:"/>
                        <p:calendar navigator="true" value="#{pagosBean.pago.fecreg}"/>
                        <p:outputLabel value="Tipo:"/>
                        <p:selectOneMenu value="#{pagosBean.pago.tipo}">
                            <f:selectItem itemLabel="Letra" itemValue="LE" />
                            <f:selectItem itemLabel="Nota de Credito" itemValue="NC" />
                        </p:selectOneMenu>
                        <p:outputLabel value="Referencia:"/>
                        <p:inputText value="#{pagosBean.pago.operacion}"/>
                        <p:outputLabel value="Monto:"/>
                        <p:inputText value="#{pagosBean.pago.monto}"/>
                        <p:outputLabel value="Descripción:"/>
                        <p:inputText value="#{pagosBean.pago.descripcion}"/>
                        <p:commandButton actionListener="#{pagosBean.insertar()}" value="Pagar" oncomplete="dlgpagar.hide()"
                                         update=":formModificar"/>
                    </p:panelGrid>
                </h:form>                        
            </p:dialog>
            <p:dialog id="dlg3" header="Ingrese los datos" showEffect="explode" hideEffect="explode" 
                      widgetVar="dlgnotadebito" modal="true" resizable="false" minWidth="200">
                <h:form id="formNotadebito">
                    <p:panelGrid columns="4">
                        <p:outputLabel value="Fecha Inicio:"/>
                        <p:calendar navigator="true" value="#{creditoBean.letra.fecini}"/>
                        <p:outputLabel value="Fecha Venc:"/>
                        <p:calendar navigator="true" value="#{creditoBean.letra.fecven}"/>                            
                        <p:outputLabel value="Monto:"/>
                        <p:inputText value="#{creditoBean.letra.monto}"/>                            
                        <p:commandButton actionListener="#{creditoBean.insertarNotaDebito()}" value="Guardar" oncomplete="dlgnotadebito.hide()"
                                         update=":formModificar"/>
                    </p:panelGrid>
                </h:form>                        
            </p:dialog>
            <p:dialog id="dlg2" header="Eliminar Credito" showEffect="explode" hideEffect="explode" 
                      widgetVar="dlgeliminar" modal="true" resizable="false" minWidth="200">
                <h:form id="formEliminar">
                    <h:outputText value="¿Desea eliminar?" />
                    <p:commandButton value="Si" actionListener="#{creditoBean.eliminar()}" 
                                     ajax="false" oncomplete="dlgeliminar.hide();" />
                    <p:commandButton value="No" onclick="dlg2.hide();" />
                </h:form>
            </p:dialog>                
        </ui:define>
    </ui:composition>        
</body>

我的CreditoBean:

@ManagedBean
@SessionScoped
public class creditoBean implements Serializable {

public Credito credito = new Credito();
public List<Credito> creditos;
LetrasDao letrasdao = new LetrasDaoImplements();
public List<Letras> letrasventa;
public List<Credito> filtradafecha;
private Date fecha1 = new Date();
private Date fecha2 = new Date();
private List<Letras> letraslista = new ArrayList();
private Pagos pago = new Pagos();
private Letras letra = new Letras();
private String dni;
private BigDecimal res;

/*Constructor and getters and setters*/

public void eliminar() {
    CreditoDao creditodao = new CreditoDaoImp();
    LetrasDao letrasdao = new LetrasDaoImplements();
    List<Letras> letrita = new ArrayList();
    letrita = letrasdao.mostrarLetrasXCred(credito);
    BigDecimal totaldeuda = new BigDecimal(BigInteger.ZERO);
    for (int i = 0; i < letrita.size(); i++) {
        Letras get = letrita.get(i);
        totaldeuda = totaldeuda.add(get.getMonto());
    }
    if (totaldeuda.compareTo(credito.getTotaldeuda()) == 0) {
        creditodao.eliminarVenta(credito);
    } else {
        System.out.println("Mostrar Error de que el credito ya ha sido cobrado y no se puede borrar");
    }
    credito = new Credito();
}

public Date sumaDias(Date fecha, int dias) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(fecha);
    cal.add(Calendar.DAY_OF_YEAR, dias);
    return cal.getTime();
}

public void filtrarFechas() {
    CreditoDao linkdao = new CreditoDaoImp();
    filtradafecha = linkdao.filtrarFechas(fecha1, fecha2);
}

public void cargarCredito(Anexo anexo) {
    letraslista = new ArrayList();
    CreditoDao creditodao = new CreditoDaoImp();
    List<Letras> letritas = new ArrayList();
    Calendar calendario = GregorianCalendar.getInstance();
    Date fecha = calendario.getTime();
    credito = creditodao.cargarCreditoxAnexo(anexo);
    LetrasDao letras = new LetrasDaoImplements();
    letritas = letras.mostrarLetrasXCred(credito);
    for (int i = 0; i < letritas.size(); i++) {
        System.out.println(" Entre al for :" + letritas.get(i));
        Letras get = letritas.get(i);
        if (get.getSaldo().compareTo(BigDecimal.ZERO) == 0) {
            get.setEstado("CN");
            System.out.println(" Entre al IF :" + get.getEstado());
        } else {
            if (get.getSaldo().compareTo(BigDecimal.ZERO) == 1) {
                if (get.getFecven().after(fecha)) {
                    get.setEstado("PN");
                } else {
                    get.setEstado("VN");
                }
            }
        }
        letrasdao.modificarLetra(get);
    }
    letraslista = letras.mostrarLetrasXCred(credito);
}

public void cargarLetras(/*Anexo anexo*/) {
    letraslista = new ArrayList();
    CreditoDao creditodao = new CreditoDaoImp();
    List<Letras> letritas = new ArrayList();
    Calendar calendario = GregorianCalendar.getInstance();
    Date fecha = calendario.getTime();
    LetrasDao letras = new LetrasDaoImplements();
    letritas = letras.mostrarLetrasXCred(credito);
    for (int i = 0; i < letritas.size(); i++) {
        System.out.println(" Entre al for :" + letritas.get(i));
        Letras get = letritas.get(i);
        if (get.getSaldo().compareTo(BigDecimal.ZERO) == 0) {
            get.setEstado("CN");
            System.out.println(" Entre al IF :" + get.getEstado());
        } else {
            if (get.getSaldo().compareTo(BigDecimal.ZERO) == 1) {
                if (get.getFecven().after(fecha)) {
                    get.setEstado("PN");
                } else {
                    get.setEstado("VN");
                }
            }
        }
        letrasdao.modificarLetra(get);
    }
    letraslista = letras.mostrarLetrasXCred(credito);
}

public void insertarPago() {
    PagosDao linkDao = new PagosDaoImp();
    System.out.println("Este es el Id de letra :" + letra.getIdletras());
    linkDao.insertarPago(pago);
    pago = new Pagos();
}

public void insertarNotaDebito() {
    LetrasDao letrasdao = new LetrasDaoImplements();
    Date d = new Date();
    letra.setCredito(credito);
    letra.setDescripcion("ND");
    letra.setFecreg(d);
    letra.setMontoletra(BigDecimal.ZERO);
    letra.setInteres(BigDecimal.ZERO);
    letra.setSaldo(letra.getMonto());
    letra.setEstado("PN");
    letrasdao.insertarLetra(letra);
}

public void cargarAnexoDNI() {
    filtradafecha = new ArrayList();
    AnexoDao anexodao = new AnexoDaoImplements();
    Anexo anexo = new Anexo();
    CreditoDao creditodao = new CreditoDaoImp();
    try {
        anexo = anexodao.cargarClientexDoc(dni, "CN", "CJ");
        credito = creditodao.cargarCreditoxAnexo(anexo);
        filtradafecha.add(credito);
    } catch (Exception e) {
    }

}

最后,我的道:

package Dao;

import Model.Anexo;
import Model.Credito;
import Model.Letras;
import Persistencia.HibernateUtil;
import java.util.Date;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Query;

import org.hibernate.Session;


public class CreditoDaoImp implements CreditoDao{

@Override
public List<Credito> mostrarVentas() {
    Session session = null;
    List<Credito> lista = null;
    try{
        session = HibernateUtil.getSessionFactory().openSession();
        Query query = session.createQuery("FROM Credito");
        lista = (List<Credito>)query.list();
    }catch (HibernateException e){
        System.out.println(e.getMessage());
    }
    finally{
        if (session != null){
            session.close();
        }
    }
    return lista;
}

@Override
public void insertarVenta(Credito credito) {
    Session session = null;
    try {
        session = HibernateUtil.getSessionFactory().openSession();
        session.beginTransaction();
        session.save(credito);
        session.getTransaction().commit();
    } catch (HibernateException e){
        System.out.println(e.getMessage());
        session.getTransaction().rollback();
    }
    finally {
        if(session != null){
            session.close();
        }
    }
}

@Override
public void modificarVenta(Credito credito) {
    Session session = null;
    try {
        session = HibernateUtil.getSessionFactory().openSession();
        session.beginTransaction();
        session.update(credito);
        session.getTransaction().commit();
    } catch (HibernateException e){
        System.out.println(e.getMessage());
        session.getTransaction().rollback();
    }
    finally {
        if(session != null){
            session.close();
        }
    }
}

@Override
public void eliminarVenta(Credito credito) {
    Session session = null;
    try {
        session = HibernateUtil.getSessionFactory().openSession();
        session.beginTransaction();
        session.delete(credito);
        session.getTransaction().commit();
    } catch (HibernateException e){
        System.out.println(e.getMessage());
        session.getTransaction().rollback();
    }
    finally {
        if(session != null){
            session.close();
        }
    }
}

@Override
public List<Credito> filtrarFechas(Date date1, Date date2) {
    Session session = null;
    List<Credito> lista = null;
    try{
        session = HibernateUtil.getSessionFactory().openSession();
        Query query = session.createQuery("FROM Credito WHERE fechareg BETWEEN :start_date AND :end_date" );
        query.setParameter("start_date", date1);
        query.setParameter("end_date", date2);
        lista = (List<Credito>)query.list();
    }catch (HibernateException e){
        System.out.println(e.getMessage());
    }
    finally{
        if (session != null){
            session.close();
        }
    }
    return lista;
}

@Override
public Credito cargarCreditoxAnexo(Anexo anexo) {
    Session session = null;
    Credito credito = new Credito();
    Integer idanexo;
    idanexo = anexo.getIdanexo();
    try {
        session = HibernateUtil.getSessionFactory().openSession();
        Query query = session.createQuery("FROM Credito WHERE idanexo=:w");
        query.setParameter("w", idanexo);
        credito = (Credito) query.uniqueResult();
    } catch (HibernateException e) {
        System.out.println(e.getMessage());
    } finally {
        if (session != null) {
            session.close();
        }
    }
    return credito;
}    

@Override
public Credito cargarCreditoxLetra(Letras letra) {
    Session session = null;
    Credito credito = new Credito();
    Integer idcredito;
    idcredito = letra.getCredito().getIdventa();
    try {
        session = HibernateUtil.getSessionFactory().openSession();
        Query query = session.createQuery("FROM Credito WHERE idventa=:w");
        query.setParameter("w", idcredito);
        credito = (Credito) query.uniqueResult();
    } catch (HibernateException e) {
        System.out.println(e.getMessage());
    } finally {
        if (session != null) {
            session.close();
        }
    }
    return credito;
}

@Override
public List<Credito> filtrarDni(String dni) {
    Session session = null;
    List<Credito> lista = null;
    try{
        session = HibernateUtil.getSessionFactory().openSession();
        Query query = session.createQuery("FROM Credito WHERE " );
        query.setParameter("start_date", dni);            
        lista = (List<Credito>)query.list();
    }catch (HibernateException e){
        System.out.println(e.getMessage());
    }
    finally{
        if (session != null){
            session.close();
        }
    }
    return lista;
}

@Override
public List<Credito> filtrarCreditoxAnexo(Anexo anexo) {
    Session session = null;
    List<Credito> lista = null;
    Integer idanexo;
    idanexo = anexo.getIdanexo();
    try {
        session = HibernateUtil.getSessionFactory().openSession();
        Query query = session.createQuery("FROM Credito WHERE idanexo=:w");
        query.setParameter("w", idanexo);
        lista = query.list();
    } catch (HibernateException e) {
        System.out.println(e.getMessage());
    } finally {
        if (session != null) {
            session.close();
        }
    }
    return lista;
}
}

结果:

enter image description here