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

Posted

技术标签:

【中文标题】将额外参数传递给 f:ajax onevent 函数【英文标题】:Passing extra parameter to f:ajax onevent function 【发布时间】:2012-02-22 11:20:01 【问题描述】:

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

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

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

我做了这样的事情:

<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:param(或者f:attribute,或其他任何方式)向我的f:ajax onevent javascript 方法提供一个附加参数吗?

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

这个 'extraValue' 可以是 jsf 表达式吗?我的意思是可以是 onevent="function(data) showProgress(data, '#myBean.whatever') 之类的东西?谢谢! 自动回复:是的,可以使用,:)

以上是关于将额外参数传递给 f:ajax onevent 函数的主要内容,如果未能解决你的问题,请参考以下文章

将额外参数传递给事件处理程序?

将额外的参数传递给回调函数

如何将额外的额外参数传递给批处理文件?

将额外的参数传递给IntersectionObserver?

将额外参数传递给 usort 回调

将额外参数传递给异步映射