Java Server Faces
Tengo un problema al llenar un combobox usando JSF mis etiqueta tag es la siguiente:
Lo que necesito es llenar tal combobox con las ciudades que tenga en mi base de datos, ya tengo mi bean Persona el cual tienes un atributo "ciudad" de tipo String, de igual forma tengo un atributo "ciudades" de tipo ArrayList, el cual lleno con las ciudades que existen en mi base de datos cuando se manda a llamar su metodo get (getCiudades). El bean ya lo declare en mi faces-config.xml:
Me manda la siguiente exepcion:
Espero me puedan ayudar, gracias de antemano.
- Inicie sesión o regístrese para enviar comentarios
Ya pude resolverlo
Ya pude llenar el "h:selectOneMenu" de esta manera:
En el JSP:
En el faces-config.xml:
Bean persona:
Bean Ciudad:
Tengo algunas dudas: Estoy integrando JSF y Hibernate en una aplicacion de ejemplo.
1. Es correcto que el metogo getListaCiudades llene el combo?, si es asi por que se manda a llamar dos veces en el JSP lo que genera que se llene mi combo con datos repetidos? ( Lo solucione limpiando mi ArrayList "listaCiudades").
2. Es correcto que use los mismo beans de mapeo del hibernate como beans de respaldo de JSF?
3. Alguien tiene algun manual o tutorial donde expliquen como integrar Hibernate con JSF?
Re: JSF y Hibernate
¡Gracias por publicar la respuesta! Ojalá y todos hicieran lo mismo una vez que resolvieran sus problemas. Además los ejemplos son muy legibles. Me gusta este post.
¿Estás aseguro que se manda llamar dos veces? Yo creo que no es así.
Yo lo hago siempre que puedo. Me gusta programar orientado a objetos, donde una clase encapsula datos y comportamiento. Detesto los beans tontos que nada más tienen datos y los beans "procedurales" que sólo tienen comportamiento.
Mejor usa Seam Framework, ya ambos vienen integrados muy bien.
Saludos
Javier Castañón
Gracias por contestar.
Con respecto a la primera pregunta (Es correcto que el metogo getListaCiudades llene el combo?), en mi JSP tengo esto:
ciudad es un atributo del Bean Persona y listaCiudades es un atributo del Bean Ciudad, hasta aqui todo bien. Bueno quiero entender que ciudad y listaCiudad por defecto van a sus respectivos metodos getter's, si antes fueron seteados muentran informacion si no aparecen vacios ok, bueno en el metodo "getListaCiudades()" recupero desde mi base de datos las ciudades para mostrarlas en el combo, pero me muestra datos repetidos, si en mi base tenia tres ciudades me aparecen seis dos de cada una, lo resolvi haciendole un .crear() a mi lista de ciudades antes de consultarlas para que esto no me pasara, pero no se si esto este bien por que cada ves que se cargue el respectivo JSP hara una consulta a la Base de Datos y si en mi formulario tengo 10 combos, serian 10 consultas a la Base cada ves que se recargue el JSP.
Es correcto que el metogo
Sí, es correcto, lo que es horrible es que en cada llamada al método te des una vuelta a la base de datos. Si aparecen datos repetidos es probablemente algo de lo que debas culpar a tu DAO. Tal vez Hibernate ya había llenado la lista, y tu DAO es el que los repite.
Saludos
Javier
Otro problema con el combo :(
Tengo el siguiente problema, mi combo ya se llena de manera correcta como lo mencione anteriormente. Pero cuando quiero ontener los valores de mi formulario me genera el siguiente problema:
sourceId=j_id_id16:j_id_id28[severity=(ERROR 2), summary=(Error de conversion en el valor puesto 'beans.Ciudad@7c233a' del modelo 'null Converter'.), detail=(Error de conversion en el valor puesto 'beans.Ciudad@7c233a' del modelo 'null Converter': excepción de: {2})];|WARNING: FacesMessage(s) have been enqueued, but may not have been displayed.
sourceId=j_id_id16:j_id_id28[severity=(ERROR 2), summary=(Error de conversion en el valor puesto 'beans.Ciudad@7c233a' del modelo 'null Converter'.), detail=(Error de conversion en el valor puesto 'beans.Ciudad@7c233a' del modelo 'null Converter': excepción de: {2})]
En mi JSP tengo lo siguiente:
En Persona.submit solo tengo unos Systems.out.println() para imprimir lo que el usuario ingreso al formulario funciona si al formulario le quito el combo, por lo cual deduzco que el problema se encuentra ahi, Persona.ciudad es de Tipo Ciudad y Persona.listaCiudades es un ArrayList con objetos de tipo Ciudad, no entiendo cual es mi error :(
Paquete DAO
Buenas, me podeis hacer un poco la idea de lo que contiene el metodo getCiudades, es que aparece en el paquete dao.Metodos.getCiudades y no me aclaro muy bien.
Gracias!!