【发布时间】:2013-07-24 12:48:20
【问题描述】:
我发现这个问题已经以不同的形式被问过好几次了,但我仍然需要一些帮助,因为无法像示例中那样得到这个。
我有一个带有 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()”,但我没有在服务器端捕获任何事件。
我似乎正在按照其他类似问题中的指示进行操作,但我缺少最终结果。
任何帮助将不胜感激,谢谢。
【问题讨论】:
-
jQuery 不能调用非 jQuery 定义的点击函数。您需要在单击时向服务器发送一个 ajax 请求,然后将结果发回。或者您需要将该数据预先填充到 JS 变量中,并在使用 jQuery 定义点击函数后在点击时从变量中提供数据。
标签: javascript jquery jsf-2 primefaces