Lunes, 14 Julio 2014 20:39

Cargar tabla datatable JSF desde una base de datos MySQL

Escrito por 
Valora este artículo
(0 votos)

En este nuevo post, cargaremos nuestra tabla datatable JSF desde una base de datos MySql. Nos basamos en los ejemplos realizados anteriormente, osea  cargaremos la tabla y podremos agregar, eliminar o modificar registros desde la pagina index.xhtml, también estarán incluidas  las validaciones desarrolladas, lo único que cambia es la fuente de datos, y aquí solamente modificaremos nuestra clase backbean “lista” de los ejemplos anteriores.

Para este ejemplo hacemos uso del ultimo post sobre JSF, en donde incorporamos todo lo aprendido hasta ahora

Tambien hacemos uso de la base de datos creada en MySql


En primer lugar lo que haremos es agregar a nuestro proyecto web, la aplicación realizada anteriormente. Lo que hacemos aquí es incorporar a nuestro proyecto web la aplicación java, y a través de esto poder utilizar todos los métodos creados en la aplicación, podemos decir que estará incorporado al proyecto como una librería aparte. Esto es una ventaja ya que nuestra lógica de persistencia estará bien separada de nuestra vista.
Empezamos, le damos click derecho sobre el proyecto y elegimos “propiedades

Elegimos el ítem “Libraries”, luego le damos click en “Add Project


Buscamos el lugar donde se encuentra nuestra aplicación java, (en este caso Persistencia es la aplicacion) y le damos click en “Agregar al proyecto archivos JAR


Bien en la imagen siguiente observamos que tenemos agregada ya nuestra aplicación Persistencia, para terminar esta parte le damos click en aceptar


Ahora nos falta agregar las librerías necesarias para poder utilizar MySql y la de Hibernate con JPA. Para ello le damos click derecho sobre “Libraries” y elegimos “Agregar Biblioteca

Seleccionamos “Driver Mysql JDBC” y “Hibernate JPA” y le damos click en “Añadir biblioteca

Nuestra carpeta de “Libraries” debe quedar como lo muestra la imagen


Con todo esto estamos en condiciones de poder utilizar las clases creadas en la aplicación “Persistencia”.
A continuación modificaremos la clase “Lista” con las siguientes líneas
 

  1. import java.text.ParseException;
  2. import java.text.SimpleDateFormat;
  3. import java.util.ArrayList;
  4. import java.util.Date;
  5. import javax.faces.application.FacesMessage;
  6. import javax.faces.component.UIComponent;
  7. import javax.faces.component.html.HtmlDataTable;
  8. import javax.faces.context.FacesContext;
  9. import javax.faces.validator.ValidatorException;
  10. import persistencia.*;
  11.  
  12. public class Lista {
  13.   private String txtNombre;
  14.   private String txtApellido;
  15.   private String txtDireccion;
  16.   private String txtMail;
  17.   private Date txtFechaNac;
  18.   private double txtSueldoBas;
  19.   private int txtSectorEmpr;
  20.   private ArrayList<Persona> lista= new ArrayList<Persona>(){};
  21.   private  HtmlDataTable tabla;
  22.   private Persona persona;
  23.   PersonaJpaController controlador;
  24.   SimpleDateFormat fecha = new SimpleDateFormat("dd/MM/yyyy");
  25.   public Lista() {
  26.   //instanciamos la clase Persona  
  27.     persona= new Persona();
  28. //instanciamos la clase PersonaJpaController      
  29.     controlador= new PersonaJpaController();
  30. //cargamos la tabla    
  31.     cargarTabla();
  32.   }
  33.   public void cargarTabla(){
  34.    //insertamos al lista, todos los registro devueltos
  35.    //por el metodo  findPersonaEntities del objeto
  36.    //controlador
  37.    lista = (ArrayList<Persona>)controlador.findPersonaEntities();
  38.   }
  39. public void cargarLista(){
  40. //seteamos las propiedades de persona  
  41. persona.setNombre(txtNombre);
  42. persona.setApellido(txtApellido);
  43. persona.setDireccion(txtDireccion);
  44. persona.setFechaNacimiento(fecha.format(txtFechaNac));
  45. persona.setSectorEmpresa(txtSectorEmpr);
  46. persona.setSueldoBasico(txtSueldoBas);
  47. persona.setMail(txtMail);
  48. //utilizamos el metodo create de controlador
  49. //para insertar un nuevo registro
  50. controlador.create(persona);
  51. //volvemos a cargar la tabla para refrescar
  52. cargarTabla();
  53. }
  54. public void seleccionLista() throws ParseException{
  55.     persona=(Persona) tabla.getRowData();
  56.     this.txtApellido=persona.getApellido();
  57.     this.txtNombre=persona.getNombre();
  58.     this.txtDireccion=persona.getDireccion();
  59.     this.txtMail=persona.getMail();
  60.     this.txtSectorEmpr=persona.getSectorEmpresa();
  61.     this.txtSueldoBas=persona.getSueldoBasico();
  62.     this.txtFechaNac=fecha.parse(persona.getFechaNacimiento());
  63.  }
  64. public void eliminarLista(){
  65.   try{
  66. //utilizamos el metodo destroy de la clase
  67. //controlador para eliminar un registro
  68.   controlador.destroy(persona.getId());
  69.   }
  70.   catch(Exception e){
  71.     System.out.println(e);
  72.   }
  73.   //volvemos a cargar la tabla para refrescar
  74.   cargarTabla();
  75. }
  76. public void modificarLista(){
  77.   //seteamos las propiedades de persona  
  78. persona.setNombre(txtNombre);
  79. persona.setApellido(txtApellido);
  80. persona.setDireccion(txtDireccion);
  81. persona.setFechaNacimiento(fecha.format(txtFechaNac));
  82. persona.setSectorEmpresa(txtSectorEmpr);
  83. persona.setSueldoBasico(txtSueldoBas);
  84. persona.setMail(txtMail);
  85. //controlamos las excepciones con try- catch
  86. try{
  87. //utilizamos el metodo edit de la clase controlador
  88. //para modificar  
  89. controlador.edit(persona);
  90. }
  91. catch(Exception e){
  92.   System.out.println(e);
  93. }
  94. }
  95.   public HtmlDataTable getTabla() {
  96.     return tabla;
  97.   }
  98.   public void setTabla(HtmlDataTable tabla) {
  99.     this.tabla = tabla;
  100.   }
  101.  
  102.   public ArrayList<Persona> getLista() {
  103.     return lista;
  104.   }
  105.   public void setLista(ArrayList<Persona> lista) {
  106.     this.lista = lista;
  107.   }
  108.   public String getTxtApellido() {
  109.     return txtApellido;
  110.   }
  111.   public void setTxtApellido(String txtApellido) {
  112.     this.txtApellido = txtApellido;
  113.   }
  114.   public String getTxtDireccion() {
  115.     return txtDireccion;
  116.   }
  117.   public void setTxtDireccion(String txtDireccion) {
  118.     this.txtDireccion = txtDireccion;
  119.   }
  120.   public String getTxtNombre() {
  121.     return txtNombre;
  122.   }
  123.   public void setTxtNombre(String txtNombre) {
  124.     this.txtNombre = txtNombre;
  125.   }
  126.  
  127.   public Date getTxtFechaNac() {
  128.     return txtFechaNac;
  129.   }
  130.  
  131.   public void setTxtFechaNac(Date txtFechaNac) {
  132.     this.txtFechaNac = txtFechaNac;
  133.   }
  134.  
  135.   public int getTxtSectorEmpr() {
  136.     return txtSectorEmpr;
  137.   }
  138.  
  139.   public void setTxtSectorEmpr(int txtSectorEmpr) {
  140.     this.txtSectorEmpr = txtSectorEmpr;
  141.   }
  142.  
  143.   public double getTxtSueldoBas() {
  144.     return txtSueldoBas;
  145.   }
  146.  
  147.   public void setTxtSueldoBas(double txtSueldoBas) {
  148.     this.txtSueldoBas = txtSueldoBas;
  149.   }
  150.  
  151.   public String getTxtMail() {
  152.     return txtMail;
  153.   }
  154.  
  155.   public void setTxtMail(String txtMail) {
  156.     this.txtMail = txtMail;
  157.   }
  158.  
  159.   public void validaMail(FacesContext fc, UIComponent uic, Object o) {
  160.     //convertimos a string
  161.   String strValue = String.valueOf(o);
  162.   //verificamos el mail por una expresion regular
  163.   if (!strValue.matches(".+@.+\\.[a-z]+")) {
  164.     //si noes valido lanzamos una excepsion con un mensaje
  165.    throw new ValidatorException(new FacesMessage("Formato de mail incorrecto"));
  166.   }
  167.  }
  168.   }

Las nuevas líneas están explicadas como comentarios. Los únicos métodos que modificamos son

  • cargarLista
  • seleccionLista
  • eliminarLista
  • modificarLista

 y tenemos un nuevo método

  • cargarTabla

También incluimos los imports

  • import persistencia.*;

Las declaraciones

  • private Persona persona;
  •   private PersonaJpaController controlador;

Y  las instancias

  •     persona= new Persona();
  •     controlador= new PersonaJpaController();

Bien eso es todo en cuanto a las modificaciones en nuestro Proyecto WEB JSF, TODOS los demás archivos quedan como estaban (por ahora en este post ja).

Si seguiemos todos los pasos tal cual se los redacte (espero no haberme equivocado) ya estamos en condiciones de ejecutar nuestro proyecto.
Bien lo ejecutamos  y nos tendría que aparecer un ventana similar a la siguiente


Observamos que la tabla ya esta cargada con 2 registros (que se encuentran en nuestra Base de Datos)
Agregamos un registro


Y podemos modificar o eliminar, los cuales se refrescaran en nuestra  base de datos MySql


Con este ejemplo tenesmo incorporada todo lo hecho en los anteriores post, como ser la validación, LO UNICO QUE CAMBIAMOS ES LA FUENTE DE DATOS, QUE EN ESTE CASO ES UNA BASE DE DATOS MYSQL.
Bien espero que haya sido de su ayuda y si les sirvió solo tienen que comentar. wink

Recordar que  yo utilice Netbeans 6.8 para este proyecto, el JDK6 , la version 2.0 de JSF. , la version V3 de Glassfish, una base de datos Mysql 5.0.

puede que tengas problemas a la  hora de desplegar el archivos, lo que tienen que hacer es volver a desplegar la aplicacion sobre el servidor que tengan instalado, sino deberian crear un proyecto de nuevo e ir agregando los archivos del proyecto. Saludos

Visto 3220 veces

1 comentario

Deja un comentario

Asegúrate de llenar la información requerida marcada con (*). No está permitido el código HTML. Tu dirección de correo NO será publicada.