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

Xav*_*ois 19 javascript ajax jsf-2

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

这里的主要表面没用p:ajaxStatus,因为我想在我的页面中的不同位置有许多不同的图标.

我在这个问题中找到了一些解决方案:" 如何在同一输入中显示不同的ajax状态? ",但我仍然有一个问题:为了使我的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>
Run Code Online (Sandbox Code Playgroud)

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

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

Bal*_*usC 43

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

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

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

  • 哦,确实很聪明! (3认同)
  • 这个'extraValue'可以是jsf表达式吗?我的意思是可以像 `onevent="function(data) { showProgress(data, '#{myBean.whatever}') }` ?谢谢! (2认同)
  • 自动回复:是的,可以使用,:) (2认同)