I'm trying to do a commandLink that shows more details about an object (I'm in a foreach tag)
<h:commandLink
action="#{controller.findProduct}" value="#{p.name}">
<f:param name="id" value="#{p.id}" />
</h:commandLink>
This is my ManagedBean
@ManagedBean
public class Controller {
@ManagedProperty(value="#{param.id}")
private Long id;
private String name;
private Product product;
....
public String findProduct() {
this.product = facade.getProduct(id);
return "details";
}
And this is my faces-config.xml
<managed-bean>
<managed-bean-name>controller</managed-bean-name>
<managed-bean-class>html.controller.Controller</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>id</property-name>
<property-class>Long</property-class>
<value>#{param.id}</value>
</managed-property>
</managed-bean>
But I get this error:
Property id references object in a scope with shorter lifetime than the target scope session
Why? I think I don't set well the property-name in faces-config-xml, so what should I put in it?