Assign a param to a bean with <a4j:actionparam>
klhoste Dec 3, 2009 4:52 AMHello,
I'm trying to pass a bean as parameter with <a4j:actionparam> in a JSF web app but it doesn't work. I succeed in doing it with a bean attribute, but it's not what I want.
The code of the first bean
FirstBean.java
public class FirstBean { private String name; private String id; //getters and setters ... }
Code of the second bean
SecondBean.java
public class SecondBean { private FirstBean firstBean //getter and setter ... }
In my JSP, there is a data table using a result list which returns a List of FirstBean :
<rich:extendedDataTable value="#{searchBean.resultList}" var="item"> <rich:column> <a4j:commandLink reRender="div_to_render"> <a4j:actionparam name="item" value="#{item}" assignTo="#{secondBean.firstBean}"/> <h:outputText value="#{item.name}"/> </a4j:commandLink> </rich:column> </rich:extendedDataTable>
I would retrieve the "item" values in a div like this :
<div id="div_to_render"> <h:outputText value="#{secondBean.firstBean.name}"/> </div>
At the beginning, I had the faces-config.xml as follow:
<managed-bean> <managed-bean-name>firstBean</managed-bean-name> <managed-bean-class>package.FirstBean</managed-bean-class> <managed-bean-scope>none</managed-bean-scope> </managed-bean> <managed-bean> <managed-bean-name>secondBean</managed-bean-name> <managed-bean-class>package.SecondBean</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean>
I have no error using this code, but #{secondBean.firstBean.name} is null.
then I add managed-property to make a link with the other bean :
faces-config.xml
<managed-bean> <managed-bean-name>firstBean</managed-bean-name> <managed-bean-class>package.FirstBean</managed-bean-class> <managed-bean-scope>none</managed-bean-scope> </managed-bean> <managed-bean> <managed-bean-name>secondBean</managed-bean-name> <managed-bean-class>package.SecondBean</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> <managed-property> <property-name>firstBean</property-name> <property-class>package.FirstBean</property-class> <value>#{firstBean}</value> </managed-property> </managed-bean>
No error either in this case, and the bean attributes stay null...
Am I wrong, is it possible to do this ?
Thanks by advance.
Kevin