Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Passing extra parameter to f:ajax onevent function

In my JSF 2.0 (on JBoss AS 7) project, I would like on my ajax submitted forms to display a little icon status triggered on begin and complete phases, to let the end user know that something is still happening.

The primefaces p:ajaxStatus is not useful here, as I'd like to have many different icons at different places in my page.

I found a bit of the solution in this question: "How show different ajax status in same input?", but I still have a problem: in order to make my javascript function reusable, I need to provide an extra parameter to the call.

I did something like this:

<h:commandLink value="do something boy!">
    <f:ajax render="@form" execute="@form" listener="#{myBean.doStuff}"
        onevent="showProgress" />
    <f:param name="extraParam" value="extraValue" />
</h:commandLink>

and I can see the parameter "extraParam" sent to the server through the request, but in my javascript showProgress method I cannot recover it through the only given parameter.

So my questions is: can I provide to my f:ajax onevent javascript method an additionnal parameter through f:param (or maybe f:attribute, or anything else)?

like image 543
Xavier Portebois Avatar asked Jan 30 '12 17:01

Xavier Portebois


1 Answers

Wrap it in an anonymous function wherein you pass it as extra argument.

<h:commandLink value="do something boy!">
    <f:ajax render="@form" execute="@form" listener="#{myBean.doStuff}"
        onevent="function(data) { showProgress(data, 'extraValue') }" />
</h:commandLink>

with

function showProgress(data, extraParam) {
    // Use "data" argument the usual way.
    // The "extraParam" argument will contain "extraValue" in above example.
}
like image 163
BalusC Avatar answered Nov 10 '22 20:11

BalusC