Ejercicio1
El objetivo del ejercicio de ahora es, que modificando el ejercicio de ayer, que el enlace de edición vaya a una acción de un ejb y que esa acción rellene un objeto de tipo Disco gracias a un componente, una clase, que hemos creado que se enlaza a la lista, y que nos rediriga a la página de edición simplemente llamando a su url, sin ninguna acción más ya que el disco ya lo tiene.
- Duplicamos los bean (y sus interfaces): ListaDiscoBean y EditaDiscoBean y en los xhtml igualmente pero en el de lista de disco quitamos el parametro al s:link, o mejor dicho... quitamos el s:link completo y usamos mejor un h:commandButton o un h:commandLink con la acción redirigiendola a "EditaDiscoBean2"
- Creamos una clase java, que se llame "MiComponente" con una anotación anteponiendo la clase: "@Name("miComp")".
Le añadimos como atributo: "HtmlDataTable tabla" con sus métodos getter y setter y creamos su método principal:
public String selecciona(){
Object o = tabla.getRowData();
Disco d =(Disco) o;
return null;
} - Creamos ahora el ejb con la acción que estaba enlazada la lista con el "editar"
Lo nuevo en esta clase es que hay un objeto del tipo componente que hemos creado antes y con una anotación que lo hace dependiente:
@In(value="miComp",create=true)
MiComponente miComponente;
Y su método principal:
public String selecciona(){
disco=(Disco) miComponente.getTabla().getRowData();
System.out.println(">>>>>>>>>Nombre del disco: "+disco.getNombre()+"!!!!!!!!!!!!!!!!!!");
return "/editaDisco2.xhtml";
}
El return puede devolver directamente la url o podria devolver un valor y poner una regla de navegación en el "pages.xml" - Para que a la hora de probar los enlaces la consola no se nos vaya disparada por las consultas sql que se nos muestra editaremos el archivo "persistence.xml" usando el buscador de archivos del eclipse y editamos la propiedad "hibernate.show_sql" a false
Ejercicio2
El objetivo de este segundo ejercicio es el de hacer lo mismo pero con las clases que creamos hace unos dias, específicamente con la clase "Cliente"
Hacer una lista de clientes, que haya un enlace y que se pueda editar.
Como "novedad" usaremos el mismo componente, así que simplemente duplicamos los métodos que nos hagan falta pero para la clase Cliente
Pseudo-Ejercicio3
Bueno, esto es ya a modo personal, no me enteré bien en su día y no lo llegé a hacer pero hoy si me he enterado y lo he hecho.
El objetivo del ejercicio es que a la hora de editar un disco también aparezca un menú desplegable para cambiarle su autor y que se guarde.
Podemos cojer el ejercicio 1 de hoy y mejorarlo con esto.
- La clase "ListaDiscosBean2":
- Añadir un nuevo Query en el método de carga que seleccione todos los cantantes.
- Añadir también una lista de cantantes y su método getter y "subirlo" a la interfaz.
- La página "listaDiscos2.xhtml":
- Añadir a la tabla una columna nueva para ver el nombre del cantante (para comprobar que se ha guardado): #{d.cantante.nombre}
- Añadir a la tabla una columna nueva para ver el nombre del cantante (para comprobar que se ha guardado): #{d.cantante.nombre}
- La página "editaDisco2.xhtml"
- Añadir el select teniendo cuidado al nombre de la variable que le pongamos para mostrar la lista.
- Primer nivel// h:selectOneMenu value="#{editaDisco2.disco.cantante}" required="true"
- Segundo nivel// s:selectItems value="#{listaDiscos2.listaCant} var="_cantante" label="#{_cantante.nombre}" noselectionlabel="#{Selecciona cantante}" \\ cierre
- Segundo nivel// s:convertEntity \\ cierre
- \\cierre del primer nivel
- En la clase persistente "Cantante" añadir el Hashcode y el equals
Consejo:
No nos olvidemos del atajo de eclipse: Control+Shift+R para buscar un archivo que no sepamos donde está!!!
No hay comentarios:
Publicar un comentario