几种方法。
<h:form>
<h:commandScript name="commandName" action="#{bean.action}" render=":results" />
您可以在JS中调用它,如下所示:
commandName();
可以按以下方式传递参数:
commandName({ name1: "value1", name2: "value2" });
并获得如下:
String name1 = externalContext.getRequestParameterMap().get("name1"); // value1
String name2 = externalContext.getRequestParameterMap().get("name2"); // value2
要在load
事件期间调用它,请设置autorun="true"
。
<h:commandScript ... autorun="true" />
<h:form>
<p:remoteCommand name="commandName" action="#{bean.action}" update=":results" />
您可以在JS中调用它,如下所示:
commandName();
但是,它不使用JSF本[jsf.ajax.request()
,而是使用PrimeFaces本机jQuery(您知道,PrimeFaces是jQuery / UI之上的JSF组件库)。
可以按以下方式传递参数:
commandName([{ name: "name1", value: "value1" }, { name: "name2", value: "value2" }]);
并获得如下:
String name1 = externalContext.getRequestParameterMap().get("name1"); // value1
String name2 = externalContext.getRequestParameterMap().get("name2"); // value2
要在load
事件期间调用它,请设置autoRun="true"
。
<p:remoteCommand ... autoRun="true" />
在第一个示例中只需替换h:
为o:
。历史记录:<h:commandScript>
完全基于<o:commandScript>
。
<h:form id="form" style="display:none;">
<h:commandButton id="button" action="#{bean.action}">
<f:ajax render=":results" />
</h:commandButton>
您可以在JS中调用它,如下所示:
document.getElementById("form:button").onclick();
请注意触发的重要性,onclick()
而不是click()
在情况下<h:commandButton>
。该onclick()
立即调用onclick
功能,而click()
只是触发因素,这是不支持IE的“click”事件。如果您使用<h:commandLink>
,则可以放心使用click()
。
您可以通过<h:inputHidden>
与JS预先填写的表格相同的形式来传递参数。这在如何将JavaScript变量作为参数传递给JSF操作方法中得到了证明。
要在load
事件期间调用它,请考虑将其放在中<h:outputScript target="body">
。该target="body"
自动将<script>
在端部<body>
,因此$(document).ready()
包装是不必要的。
<h:outputScript target="body">
document.getElementById("form:button").onclick();
</h:outputScript>