JSF: commandLink + param
Publicado por Sergio (2 intervenciones) el 16/02/2009 11:58:25
Hola buenas.
Os comento. Estoy haciendo una pagina en la que se muestra un listado de productos, y cada nombre del producto es un enlace que muestra su descripcion. El problema esta que quiero pasarle el parametro id del producto. Para ello en el listado tengo esto dentro de un bucle donde hago una consulta sql.
<h:form>
<c:set var="id" scope="session"><%= rst.getInt("id")%></c:set>
<c:set var="name" scope="page"><%= rst.getString("nombre")%></c:set>
<h:commandLink action="description.jsp" actionListener="#{ProductDesc.ShowDescription}">
<c:out value="${name} - ${id}"/>
<f:param name="productId" value="#{id}"/>
</h:commandLink>
</h:form>
Luego en la funcion del bean tengo esto para recoger el parametro que paso con el enlace:
this.id = Integer.parseInt((String) FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("productId"));
Lo que ocurre es que el parametro al llegar al bean, siempre tiene el valor del ultimo producto listado. Por ejemplo si tengo los productos 1,2 y 3, si le doy a ver cualquier descripcion siempre aparece la descripcion del producto 3.
En teoria el parametro queda "ligado" con el enlace manteniendo su valor, ¿no?.
Si alguien sabe una solucion o si conoce otra forma de hacer lo que quiero...
Gracias.
Os comento. Estoy haciendo una pagina en la que se muestra un listado de productos, y cada nombre del producto es un enlace que muestra su descripcion. El problema esta que quiero pasarle el parametro id del producto. Para ello en el listado tengo esto dentro de un bucle donde hago una consulta sql.
<h:form>
<c:set var="id" scope="session"><%= rst.getInt("id")%></c:set>
<c:set var="name" scope="page"><%= rst.getString("nombre")%></c:set>
<h:commandLink action="description.jsp" actionListener="#{ProductDesc.ShowDescription}">
<c:out value="${name} - ${id}"/>
<f:param name="productId" value="#{id}"/>
</h:commandLink>
</h:form>
Luego en la funcion del bean tengo esto para recoger el parametro que paso con el enlace:
this.id = Integer.parseInt((String) FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("productId"));
Lo que ocurre es que el parametro al llegar al bean, siempre tiene el valor del ultimo producto listado. Por ejemplo si tengo los productos 1,2 y 3, si le doy a ver cualquier descripcion siempre aparece la descripcion del producto 3.
En teoria el parametro queda "ligado" con el enlace manteniendo su valor, ¿no?.
Si alguien sabe una solucion o si conoce otra forma de hacer lo que quiero...
Gracias.
Valora esta pregunta


0