Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/10/2013, 05:08
NeoAres
 
Fecha de Ingreso: mayo-2013
Mensajes: 68
Antigüedad: 11 años, 6 meses
Puntos: 0
Formulario JSF, buscar en tablas

Index.xhtml

Código:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:f="http://xmlns.jcp.org/jsf/core"
      >
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>
        <f:view>
            <h:form id='form'>
                <h:outputLabel>Id</h:outputLabel>
                <h:inputText id="identification" value="#{personas.id}"/>

<!--

    BOTÓN BUSCAR

-->
<h:commandButton value="Buscar"/>

                <h4>
                    Encontrados
                </h4>
                <h:dataTable value="#{personasJpaController.findPersonas(personas.id)}" var="personas" border="2">
                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="Id"/>
                        </f:facet>
                        <h:outputText value="#{personas.id}"/>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="Nombres"/>
                        </f:facet>
                        <h:outputText value="#{personas.nombres}"/>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="Apellidos"/>
                        </f:facet>
                        <h:outputText value="#{personas.apellidos}"/>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="Salario"/>
                        </f:facet>
                        <h:outputText value="#{personas.salario}"/>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="Edad"/>
                        </f:facet>
                        <h:outputText value="#{personas.edad}"/>
                    </h:column>
                </h:dataTable>
            </h:form>
        </f:view>
    </h:body>
</html>

PersonasJpaController
Código:
package prueba;

import java.io.Serializable;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.persistence.*;
import prueba.exceptions.NonexistentEntityException;

@ManagedBean
@SessionScoped
public class PersonasJpaController implements Serializable
{
    public PersonasJpaController()
    {
        this.emf = Persistence.createEntityManagerFactory("Prueba3EclipseLinkPU");
    }

    public PersonasJpaController(EntityManagerFactory emf) {
        this.emf = emf;
    }
    private EntityManagerFactory emf = null;

    public EntityManager getEntityManager()
    {
        return emf.createEntityManager();
    }

    public List<Personas> findPersonasEntities() {
        return findPersonasEntities(true, -1, -1);
    }

    public List<Personas> findPersonasEntities(int maxResults, int firstResult) {
        return findPersonasEntities(false, maxResults, firstResult);
    }

    private List<Personas> findPersonasEntities(boolean all, int maxResults, int firstResult) {
        EntityManager em = getEntityManager();
        try {
            CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
            cq.select(cq.from(Personas.class));
            Query q = em.createQuery(cq);
            if (!all) {
                q.setMaxResults(maxResults);
                q.setFirstResult(firstResult);
            }
            return q.getResultList();
        } finally {
            em.close();
        }
    }

    public Personas findPersonas(Integer id) {
        EntityManager em = getEntityManager();
        try {
            return em.find(Personas.class, id);
        } finally {
            em.close();
        }
    }
}
Al presionar el botón buscar se actualizan los resultados al igual que la página entera. lo que quiero es que el botón buscar solo accione la datatable con sus resultados.

PD: Empezando JSF

Última edición por NeoAres; 18/10/2013 a las 04:43