Guia Prog Web Primefaces Mysql 3
Guia Prog Web Primefaces Mysql 3
Guia Prog Web Primefaces Mysql 3
WEB
PRIMEFACES
Mysql + PrimeFaces + JSF
HECTOR DAVILA
2017
6 C La EARPRO
1
PRIME FACES
MYSQL + JSF
try {
this.Conectar();
PreparedStatement st = this.getCn().prepareCall("SELECT codigo, nombre, telefono FROM Persona");
rs = st.executeQuery();
lista = new ArrayList();
while(rs.next()) {
Persona per = new Persona();
per.setCodigo(rs.getInt("codigo"));
per.setNombre(rs.getString("nombre"));
per.setTelefono(rs.getString("telefono"));
lista.add(per);
}
}catch(Exception e){
throw e;
}finally {
this.cerrar();
return lista;
}
Quedaria asi
package controlador;
import modelo.Persona;
2
import DAO.PersonaDAO;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean
@RequestScoped
/**
*
* @author HEDY
*/
public class PersonaBean {
PersonaDAO dao;
try{
dao = new PersonaDAO();
dao.registrar(persona);
} catch(Exception e){
throw e; // aqui se puede colocar un mensaje de faces
}
PersonaDAO dao;
try{
dao = new PersonaDAO();
lstPersonas = dao.listar();
} catch(Exception e){
throw e; // aqui se puede colocar un mensaje de faces
}
3
Si se presenta que no muestra nada hay que indicarle al ajax que lo refresque
El index.xhtml
<?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:p="http://primefaces.org/ui"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<h:head>
<title>Agenda Prime</title>
</h:head>
<h:body>
<p:growl id="msj" autoUpdate="true" />
<h:form>
<p:outputLabel for="txtNombre" value="Nombre"/>
4
<p:inputText id="txtNombre" value= "#{personaBean.persona.nombre}" />
<p:outputLabel for="txtTelefono" value="Telefono"/>
<p:inputText id="txtTelefono" value= "#{personaBean.persona.telefono}" />
</p:dataTable>
</h:form>
</h:body>
</html>
personaDAO
package DAO;
import modelo.Persona;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
/**
*
* @author HEDY
*/
public class PersonaDAO extends DAO {
try{
this.Conectar();
PreparedStatement st = this.getCn().prepareStatement("INSERT INTO persona (nombre, telefono)
VALUES (?,?)");
st.setString(1,per.getNombre());
st.setString(2,per.getTelefono());
st.executeUpdate();
}catch(Exception e){
throw e;
}finally {
this.cerrar();
5
}
try {
this.Conectar();
PreparedStatement st = this.getCn().prepareCall("SELECT codigo, nombre, telefono FROM Persona");
rs = st.executeQuery();
lista = new ArrayList();
while(rs.next()) {
Persona per = new Persona();
per.setCodigo(rs.getInt("codigo"));
per.setNombre(rs.getString("nombre"));
per.setTelefono(rs.getString("telefono"));
lista.add(per);
}
}catch(Exception e){
throw e;
}finally {
this.cerrar();
return lista;
}
El controlador
package controlador;
import modelo.Persona;
import DAO.PersonaDAO;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean
@RequestScoped
6
/**
*
* @author HEDY
*/
public class PersonaBean {
PersonaDAO dao;
try{
dao = new PersonaDAO();
dao.registrar(persona);
} catch(Exception e){
throw e; // aqui se puede colocar un mensaje de faces
}
PersonaDAO dao;
try{
dao = new PersonaDAO();
lstPersonas = dao.listar();
} catch(Exception e){
throw e; // aqui se puede colocar un mensaje de faces
}
7
3 parte LINK DE MODIFICACION
MODIFICACION O ACTUALIZACION DE DATOS DE LA
AGENDA
Lo primero que debemos realizar es modificar el archivo index.xhtml en el dataTable creamos una nueva
columna llamada modificar para esto utilizamos el atributo headerText colocamos como encabezado
modificar:
Dentro de esa columna agregamos un link con la etiqueta <p:commandLink >
Asi:
Luego en la clase PersonaDAO creamos el método de acceso a datos para modificar un elemento.
Debemos crear un método que nos permita mostrar el elemento que hemos seleccionado
Traerlo por un id y otro que nos permita modificarlo por medio de un id.
También definimos en la fachad(vean) un método para poder leer o invocar lo acabamos de hacer.
Para mostrar la información que se selecciona utilizamos una etiqueta dialogo para poder editarlo.
8
El boton cancelar su objetivo principal es evitar que se realice alguna accion para esto utilizamos el atributo
immediate = true (le decimos que salte todo tipo de validacion dadas por la logica de java )
Por lo tanto despues que nosotros hagamos la actualizacion correspondiente debemos cerrar el dialogo y
refrescar la informacion del dataTable que contiene la vista de los datos
Para esconder el dialogo despues utilizamos el atributo oncomplete en lugar de show colocamos hide
CODIGO DE LA VISTA(ACTUALIZADO)
<!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:p="http://primefaces.org/ui"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<h:head>
<title>Agenda Prime</title>
</h:head>
<h:body>
<p:growl id="msj" autoUpdate="true" />
<h:form id="frm">
<p:outputLabel for="txtNombre" value="Nombre"/>
<p:inputText id="txtNombre" value= "#{personaBean.persona.nombre}" />
<p:outputLabel for="txtTelefono" value="Telefono"/>
<p:inputText id="txtTelefono" value= "#{personaBean.persona.telefono}" />
9
<p:outputLabel value="Telefono"/>
<p:inputText value= "#{personaBean.persona.telefono}"/>
Grafico vista
10
En la clase PersonaDao incluimos el metodo leerID
Este metodo permitira devolver la informacion del registro seleccionado mediante el id.
Metodo modificar
En el controlador PersonaBean
Agregamos el metodo leerID que permitira trael la informacion relacionada con el registro seleccionado
11
Luego agregamos el metodo modificar al controlador tambien:
Este metodo permite que desde la pagina se pueda hacer el llamado de la modificacion
Note que despues que hagamos la modificacion debemos llamar el metodo listar para poder visualizar los datos
actualizados.
En el metodo modificar incluimos un listar despues de la actualizacion, esto con el fin de que podamos
visualizar los datos ya cambiados.
Ejemplo:
12
Vemos que la informacion ha cambiado:
TAREA
AGREGAR LA OPCION DE BORRADO DEL PROGRAMA CON UN NUEVO LINK QUE PERMITA AL
USUARIO SELECCIONAR EL REGISTRO BORRARLO Y REFRESCAR LA LISTA.
13