http://gik.firetrot.com/index.php/2013/07/19/passing-values-from-page-to-bean-in-jsf/
There are three ways to pass values from page to JSF ManagedBean:
- Passing value with f:param tag – using action attribute
- Passing value with f:attribute tag – using actionListener attribute
- Passing value with f:setPropertyActionListener tag – no need for additional dealing, value allplies directly to bean property!
example :
case 1:
<p:commandButton value="Pass Param" action="#{PassParamBean.passParam}">
<f:param name="someParamHolder" value="THIS is VALUE_OF_PARAM !!!" /> </p:commandButton>
case 2:
<p:commandButton value="Pass Attribute" actionListener="#{PassParamBean.passAttributeListener}"
ajax="true" update="someAttributeId">
<f:attribute name="someAttributeHolder" value="THIS is VALUE_OF_ATTRIBUTE !!!" /> </p:commandButton>
case 3:
<p:commandButton value="Pass Property"
ajax="true" update="somePropertyId">
<f:setPropertyActionListener target="#{PassParamBean.someProperty}"
value="THIS is VALUE_OF_PROPERTY !!!" />
</p:commandButton>
in managed bean:
package passvalue;
import java.io.Serializable;
import java.util.Map;
import javax.faces.component.UIComponent;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
public class PassParamBean implements Serializable {
private static final String DEFAULT_OUTCOME = "pass_value";
private String someParam;
private String someAttribute;
private String someProperty;
public String passParam() {
FacesContext facesContext = FacesContext.getCurrentInstance();
ExternalContext externalContext = facesContext.getExternalContext();
Map<String, String> params = externalContext.getRequestParameterMap();
someParam = params.get("someParamHolder");
return DEFAULT_OUTCOME;
}
public void passAttributeListener(ActionEvent event) {
UIComponent component = event.getComponent();
Map<String, Object> attrs = component.getAttributes();
someAttribute = (String) attrs.get("someAttributeHolder");
}
// setters and getters
}