如何使用本机JavaScript在HTML DOM事件上调用JSF托管bean?
我需要在HTMLDOM如何使用本机JavaScript在HTML DOM事件上调用JSF托管bean?,javascript,ajax,jsf,primefaces,facelets,Javascript,Ajax,Jsf,Primefaces,Facelets,我需要在HTMLDOMload事件期间使用ajax执行JSF托管bean操作方法,类似于jQuery的$(document).ready(function(){$.ajax(…)})。我只能在这个项目中使用JSF生成的JavaScript。有没有办法在原生JSF中实现这一点?我可以使用哪个事件,或者我可以使用哪个JSF ajax函数 我正在使用JSF2.0、Facelets和PrimeFaces。几种方法 使用。注意,这只在JSF2.3之后才可用 ... 您可以在JS中调用它,如下所示: c
load
事件期间使用ajax执行JSF托管bean操作方法,类似于jQuery的$(document).ready(function(){$.ajax(…)})
。我只能在这个项目中使用JSF生成的JavaScript。有没有办法在原生JSF中实现这一点?我可以使用哪个事件,或者我可以使用哪个JSF ajax函数
我正在使用JSF2.0、Facelets和PrimeFaces。几种方法
。注意,这只在JSF2.3之后才可用
...
您可以在JS中调用它,如下所示:
commandName();
commandName({ name1: "value1", name2: "value2" });
String name1 = externalContext.getRequestParameterMap().get("name1"); // value1
String name2 = externalContext.getRequestParameterMap().get("name2"); // value2
commandName();
commandName([{ name: "name1", value: "value1" }, { name: "name2", value: "value2" }]);
String name1 = externalContext.getRequestParameterMap().get("name1"); // value1
String name2 = externalContext.getRequestParameterMap().get("name2"); // value2
document.getElementById("form:button").onclick();
可按如下方式传递参数:
commandName();
commandName({ name1: "value1", name2: "value2" });
String name1 = externalContext.getRequestParameterMap().get("name1"); // value1
String name2 = externalContext.getRequestParameterMap().get("name2"); // value2
commandName();
commandName([{ name: "name1", value: "value1" }, { name: "name2", value: "value2" }]);
String name1 = externalContext.getRequestParameterMap().get("name1"); // value1
String name2 = externalContext.getRequestParameterMap().get("name2"); // value2
document.getElementById("form:button").onclick();
并获得如下结果:
commandName();
commandName({ name1: "value1", name2: "value2" });
String name1 = externalContext.getRequestParameterMap().get("name1"); // value1
String name2 = externalContext.getRequestParameterMap().get("name2"); // value2
commandName();
commandName([{ name: "name1", value: "value1" }, { name: "name2", value: "value2" }]);
String name1 = externalContext.getRequestParameterMap().get("name1"); // value1
String name2 = externalContext.getRequestParameterMap().get("name2"); // value2
document.getElementById("form:button").onclick();
要在load
事件期间调用它,请设置autorun=“true”
但是,它不使用JSF native,而是使用PrimeFaces native jQuery(您知道,PrimeFaces是jQuery/UI之上的JSF组件库)
可按如下方式传递参数:
commandName();
commandName({ name1: "value1", name2: "value2" });
String name1 = externalContext.getRequestParameterMap().get("name1"); // value1
String name2 = externalContext.getRequestParameterMap().get("name2"); // value2
commandName();
commandName([{ name: "name1", value: "value1" }, { name: "name2", value: "value2" }]);
String name1 = externalContext.getRequestParameterMap().get("name1"); // value1
String name2 = externalContext.getRequestParameterMap().get("name2"); // value2
document.getElementById("form:button").onclick();
并获得如下结果:
commandName();
commandName({ name1: "value1", name2: "value2" });
String name1 = externalContext.getRequestParameterMap().get("name1"); // value1
String name2 = externalContext.getRequestParameterMap().get("name2"); // value2
commandName();
commandName([{ name: "name1", value: "value1" }, { name: "name2", value: "value2" }]);
String name1 = externalContext.getRequestParameterMap().get("name1"); // value1
String name2 = externalContext.getRequestParameterMap().get("name2"); // value2
document.getElementById("form:button").onclick();
要在load
事件期间调用它,请设置autoRun=“true”
您可以在JS中调用它,如下所示:
commandName();
commandName({ name1: "value1", name2: "value2" });
String name1 = externalContext.getRequestParameterMap().get("name1"); // value1
String name2 = externalContext.getRequestParameterMap().get("name2"); // value2
commandName();
commandName([{ name: "name1", value: "value1" }, { name: "name2", value: "value2" }]);
String name1 = externalContext.getRequestParameterMap().get("name1"); // value1
String name2 = externalContext.getRequestParameterMap().get("name2"); // value2
document.getElementById("form:button").onclick();
注意在出现
的情况下,触发onclick()
而不是click()
的重要性。onclick()
立即调用onclick
函数,而click()
仅触发元素上的“click”事件,IE不支持该事件。如果您使用的是
,则可以安全地使用click()
您可以通过
以事先由JS填写的相同形式传递参数。这体现在
在target=“body”
自动将
放在
的末尾,因此不需要$(document).ready()
包装器
<h:outputScript target="body">
document.getElementById("form:button").onclick();
</h:outputScript>
document.getElementById(“表单:按钮”).onclick();
UIComponent
,它扩展UICommand
,并生成必要的JSF本机JSF.ajax.request()
调用。例如,您可以查看OmniFaces的示例
想一想这个问题:可能对你有帮助:)@Heppy:不,绝对没有。你是JSF新手吗?谢谢,巴卢斯!这个问题已经用您的secound选项解决了,使用component-remoteCommand,现在它可以100%工作了!