How to pass parameter to f:ajax in h:inputText? f:param does not work
ajax, input, jsf, jsf-2, parameter-passing
Solution
The `<f:param>` works in links and buttons only, not in inputs.
If your environment supports EL 2.2, just pass it as method argument instead:
<h:inputText ...>
<f:ajax listener="#{bean.listener(item.id)}" />
</h:inputText>
public void listener(Long id) {
// ...
}
You can also just pass the whole item:
<h:inputText ...>
<f:ajax listener="#{bean.listener(item)}" />
</h:inputText>
public void listener(Item item) {
// ...
}
If your environment doesn't or can't support EL 2.2, then evaluate EL programmatically instead.
public void listener() {
FacesContext context = FacesContext.getCurrentInstance();
Long id = context.getApplication().evaluateExpressionGet(context, "#{item.id}", Long.class);
// ...
}
Problem
I need to pass a parameter to the server in my ajax request. Please see the code below. Scope: View Scope Without f:param ``` <p:column width="40"> <h:inputText id="originalCostInputTxt" value="#{articlePromo.costoBruto}" <f:ajax event="change" execute="@this" listener="#{promotionDetailManagedBean.onCostoBrutoChange}"> </f:ajax> </h:inputText> </p:column> ``` Managed Bean ``` public final void onCostoBrutoChange(final AjaxBehaviorEvent event) { createCostoBrutoOptions(promoArticlesList); } ``` In this case, the method onCostoBrutoChange() does gets invoked. But, it does not get invoked when I include f:param. Please see the code below. With f:param ``` <p:column width="40"> <h:inputText id="originalCostInputTxt" value="#{articlePromo.costoBruto}" <f:ajax event="change" execute="@this" listener="#{promotionDetailManagedBean.onCostoBrutoChange}"> <f:param value="#{articlePromo.promocionArticuloId}" name="myId"/> </f:ajax> </h:inputText> </p:column> ``` Managed Bean ``` public final void onCostoBrutoChange(final AjaxBehaviorEvent event) { createCostoBrutoOptions(promoArticlesList); String id = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("myId"); } ``` Not able to identify whats incorrect in this code. Please guide. Thanks, Shikha