将额外参数传递给f:ajax onevent函数

时间:2012-01-30 17:03:05

标签: javascript ajax jsf-2

在我的 JSF 2.0 (在 JBoss AS 7 )项目中,我想在我的ajax提交的表单上显示在开始和完成阶段触发的小图标状态,让最终用户知道某些事情仍在发生。

primefaces p:ajaxStatus在这里没用,因为我希望在我的页面中的不同位置有许多不同的图标。

我在这个问题中找到了一些解决方案:“How show different ajax status in same input?”,但我仍有问题:为了使我的javascript函数可重用,我需要为调用提供额外的参数。 / p>

我做了类似的事情:

<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>

我可以看到通过请求发送到服务器的参数“extraParam”,但在我的javascript showProgress方法中,我无法通过唯一给定的参数恢复它。

所以我的问题是:我可以通过f:ajax onevent(或者f:param或其他任何内容)向我的f:attribute javascript方法提供一个额外的参数吗?

1 个答案:

答案 0 :(得分:43)

将其包装在匿名函数中,其中将其作为额外参数传递。

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

function showProgress(data, extraParam) {
    // Use "data" argument the usual way.
    // The "extraParam" argument will contain "extraValue" in above example.
}