JSF - JSF: commandLink + param

 
Vista:

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.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:JSF: commandLink + param

Publicado por pedro pinia (1 intervención) el 24/11/2009 23:36:52
Mmmm a mi parecer estas haciendo de algo sencillo algo muy complicado, para eso se creo el tag c:foreach, podrias intentar algo como esto:

<c:foreach items="#{tuBean.tuListadeElementos}" var="elemento">

<h:commandlink blah...>
<f:param name="nombreParamero" value="${elemento.elementId}" />
</h:commandlink>

</c:foreach>

Y con esto a cada link iterado le agragara como parametro el id correspondiente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:JSF: commandLink + param

Publicado por Sergio (2 intervenciones) el 26/11/2009 14:07:28
Hola buenas, la verdad que hace ya mucho tiempo de esa pregunta pero igualmente te agradezco la respuesta. Es verdad que al final era mas sencillo de lo que yo intentaba hacer.
Finalmente opte por usar el componente dataTable que ofrecia un poco mas de funcionalidad, y funciona de forma parecida al foreach.
Pego el codigo para que que de ejemplo.

<h:form>
<h:dataTable id="products" value="#{ProductList.list}" var="prod">
<h:column>
<h:graphicImage value="products/#{prod.photo}" width="70"/>
</h:column>

<h:column>
<f:facet name="header">
<h:outputText value="Producto"/>
</f:facet>

<h:commandLink value="#{prod.name}" action="#{ Product.SelectProduct}" actionListener="#{CommentsList.LoadComments}">
<f:param name="paramId" value="#{prod.id}"/>
</h:commandLink>

</h:column>

<h:column>
<f:facet name="header">
<h:outputText value="Precio"/>
</f:facet>
<h:outputText value="#{prod.price}" />
</h:column>

<h:column>
<f:facet name="header">
<h:outputText value="Puntuacion"/>
</f:facet>
<h:outputText value="#{prod.points}" />
</h:column>
</h:dataTable>
</h:form>

Un saludo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar