繁体   English   中英

如何使用javascript / jquery调用jsf页面上的隐藏按钮

[英]How to call hidden button on a jsf page with javascript/JQuery

我发现这个问题已经以不同的形式被问过好几次了,但是我仍然需要一些帮助,因为不能像例子中那样。

我有一个带有PrimeFaces的JSF 2页面,它包含以下隐藏按钮,我需要从javascript调用pageUnLoad。

JSF具有:

// Supposed to be hidden eventually
<h:commandButton id="doStuff" action="#{myBean.callMethod()}" />

JavaScript具有:

var stuff = new Object();

$(window).bind('beforeunload', function() {
    stuff.doStuff();
});

stuff.doStuff = function() {
    // var hidden = $("#doStuff"); // Incorrect
    var hidden = document.getElementById("formId:doStuff"); // Correct
    if (hidden === undefined) {
            // Some logging
    } else {
        hidden.click();
    }
}

而且managedBean具有:

@ManagedBean(name = "myBean")
@RequestScoped
public class MyBean {
    public void callMethod() {
        // Do stuff
    }
}

通过调试,我可以看到手动单击该按钮时,它将正确触发该事件。 我还能够验证JavaScript是否被正确调用,它“似乎”找到了元素,并为其执行了“ .click()”,但是我没有在服务器端捕获任何事件。

我似乎正在按照其他类似问题中的指示进行操作,但是我缺乏最终结果。

任何帮助,将不胜感激,谢谢。

可以使用JavaScript之类的工具来单击“隐藏”按钮

document.getElementById('doStuff').click();

但是,在命名容器时应格外小心。 隐藏的按钮必须由<h:form>标记括起来,并且其prependid属性应设置为false 否则,您可以使用id formId:doStuff访问按钮。

也可以看看

JSF2 / PrimeFaces中的命名容器

无法通过JavaScript单击隐藏按钮

有一种从javascript调用服务器端方法的简单得多的方法。 定义一个p:remoteCommand ,Primefaces将创建一个JavaScript函数,您可以从JavaScript函数内部调用它。

使用以下命令定义remoteCommand:

<p:remoteCommand name="doStuff" action="#{myBean.callMethod()}"/>

然后使用beforeunload调用bean方法:

$(window).bind('beforeunload', doStuff);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM