【问题标题】:Passing extra parameter to f:ajax onevent function将额外参数传递给 f:ajax onevent 函数
【发布时间】:2016-06-08 12:49:28
【问题描述】:

在我的 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 方法提供一个附加参数吗?

【问题讨论】:

    标签: javascript ajax jsf-2


    【解决方案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}') } 之类的东西?谢谢!
    • 自动回复:是的,可以使用,:)
    猜你喜欢
    • 2021-02-27
    • 1970-01-01
    • 2017-04-09
    • 2018-10-07
    相关资源
    最近更新 更多