Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Java (http://www.forosdelweb.com/f45/)
-   -   Usar hibernate para listar (http://www.forosdelweb.com/f45/usar-hibernate-para-listar-444269/)

Sevillo 18/11/2006 12:30

Usar hibernate para listar
 
Buenas Tardes

Estoy tratando de hacer un listado de productos en un pagina usando hibernate. pero tengo las tablas producto 1, producto 2, producto3, ..., producto n, tengo las clases, producto 1.java, producto 2.java, ..., producto n.java, tambien tengo los producto i.hbm.xml, lo que quiero hacer es que desde la pagina principal yo elija que producto quiero listar seleccionandolo desde un combobox, el combo box tendra un listado de los distintos productos y una ves que elija uno valla directamente a la pagina con el listado del producto x seleccionado, lo que estoy haciendo es que me voy a la pagina listarproductos.jsp?producto=productox, ahora debo relacionar el parametro con la tabla que lleva el nombre del parametro.
Mi pregunta es, como debo hacer los acction-mapping y como relaciono el parametro producto con la tabla que quiero, el form-bean lo tengo como quiero y lo que quiero obtener es un collection de productos

public Producto getProducto() {
return producto;
}

public void setProducto(Producto producto) {
this.producto = producto;
}

public Collection getLista() {
return lista;
}

public void setLista(Collection lista) {
this.lista = lista;
}

para el listado me imagino usar el iteration, pero con lo que tengo cada vez que lo hago me voy a listarProductos.jsp y la tabla me aparece vacia.

PD: estoy usando struts e hibernate mediante MyEclipse 5.0

Gracias

:arriba:

Sevillo 18/11/2006 15:05

agregando
 
Ademas tengo el hibernatesessionfactory.java funcionando correctamente, y tengo una clase producto.java que es un public interface Produco, que garantiza que todos los producto i tengan los primeros 5 atributos iguales y tiene los gets correctamente funcionando, que son los que quiero obtener para hacer el mencionado listado, que son codigo, cantidad, nombre, descripcion y unidad de medida, en cada clase estan los get y los set correctamente, y tengo el action de la siguiente manera

/**
* Lista los productos de una determinada tabla de la base de datos
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward listar(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
GestionarItemForm gestionarItemForm = (GestionarItemForm) form;

gestionarItemForm.limpiar();
mensajes.clear();

// Obtengo la tabla que se quiere listar
String tabla = request.getParameter("producto");

try {
Collection c = null;
Session session = HibernateSessionFactory.currentSession();
Transaction tx = session.beginTransaction();
Query query = session.createQuery("from " + tabla);
c = query.list();
tx.commit();
session.close();

gestionarItemForm.setLista(c);
}

catch (HibernateException e) {
mensajes.add("items",new ActionMessage("error.bd"));
saveErrors(request.getSession(),mensajes);
gestionarItemForm.setLista(null);
}


//Estos par'ametros los "seteamos" en la sesi'on porque la salida es de tipo Redirect
//Sirven para que, al volver a la lista de productos, esten las categorias ya seleccionadas
request.getSession().setAttribute("producto", request.getParameter("producto"));
return mapping.findForward("listar");
}

y el forward listar en el arechivo struts-config.xml es:
<action
attribute="gestionarItemForm"
input="/producto/item.jsp"
name="gestionarItemForm"
parameter="accion"
path="/gestionarItem"
type="proyecto.similm.struts.action.GestionarItemA ction">
<forward name="listar" path="/listarProductos.jsp" />
</action>

para mi el error esta en el input y/o al hacer el listado en el jsp con el collection que devuelve la accion, pero sigo sin coseguir hacer el listado que quiero.

Gracias

Sevillo 18/11/2006 15:25

El parametro accion del action es porque ese action-mapping se llama gestionarItem por lo que si accion es modificar se podra modificar un elemento de la tabla, si la accion es listar, hago el listado de la tabla y si es agregar, inserto un elemento a la tabla, entonces me imagino que debo relacionar el input con el mismo listarProductos.jsp para especificar el parametro accion, y el llamado a listarProductos.jsp viene desde un javascript

<script>
function abrir(subcategoria)
{

if(subcategoria != "nula")
{
referencia = "listarProductos.jsp?" + subcategoria;
document.location=referencia;
}
}
</script>

donde subcategoria es: "producto=productoi"

Sevillo 18/11/2006 15:35

la funcion abrir es llamda desde el combobox OnChange(subcategoria) pero por lo visto nunca hago el llamado a la accion.
¿Debo colocar el llamado en el OnChange del combobox? como lo hago

Gracias de Antemano

consultoriajava 19/11/2006 12:39

consulta Sevillo
 
Ummm, ¿no se podria resumir la pregunta en un par de lineas?, es que tengo una vida :D (lo digo de buenas eeh).

:-)

Sevillo 19/11/2006 14:21

claro
 
ok, la pregunta es
¿Como puedo llamar una accion cuando un comboobox cambien, es decir en la accion OnChange pasandole el value del combobox.

yo puedo tomar el valor del combobox con la siguiente funcion document.form.select.options[document.form.select.selectedIndex].value
pero es javascript, no jsp

como puedo hacer la combinacion, llamar el action-mapping pasandole como parametro el valor del combobox el la accion OnChange

GreenEyed 20/11/2006 01:32

Haciendo un submit del formulario dentro del onChange.

Normalmente se hacen dos formularios, uno que contiene unicamente el Combo y otro con los otros campos del formulario. El combo unicamente se usa para seleccionar (usando el evento onChange con un submit) y luego el resto de campos va con otro form que permite la modificacion, alta o baja de registros.


La zona horaria es GMT -6. Ahora son las 05:23.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.