为什么a4j会发出2个Ajax调用

为什么a4j会发出2个Ajax调用,ajax,jsf-2,richfaces,ajax4jsf,Ajax,Jsf 2,Richfaces,Ajax4jsf,当我提交一个简单的表格时,我看到有2个这样的请求 <h:form id="form1"> <a4j:commandButton value="Send" id="cm1" onclick="sendData(193)"/> <a4j:jsFunction name="sendData"> <a4j:param name="param1" assignTo="#{outageManagementAction.deleteEngi

当我提交一个简单的表格时,我看到有2个这样的请求

<h:form id="form1">
    <a4j:commandButton value="Send" id="cm1" onclick="sendData(193)"/>
    <a4j:jsFunction name="sendData">
      <a4j:param name="param1" assignTo="#{outageManagementAction.deleteEngineId}" />
    </a4j:jsFunction>
   </h:form>

JSF生成的代码如下所示

<form id="form1" name="form1" method="post" action="/moutagev1/faces/pages/xOutageEdit.xhtml" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="form1" value="form1" />
<input id="form1:cm1" name="form1:cm1" onclick="jsf.util.chain(this,event,&quot;sendData(193)&quot;,&quot;RichFaces.ajax(\&quot;form1:cm1\&quot;,event,{\&quot;incId\&quot;:\&quot;1\&quot;} )&quot;);return false;" value="Send" type="submit" /><span id="form1:j_idt257" style="display: none;"><script type="text/javascript">sendData=function(param1){RichFaces.ajax("form1:j_idt257",null,{"parameters":{"param1":param1} ,"incId":"1"} )};</script></span><input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="8425501786648002013:2772799535475824519" autocomplete="off" />
</form>

sendData=function(param1){RichFaces.ajax(“form1:j_idt257”,null,{“parameters”:{“param1”:param1},“incId”:“1”});

知道为什么会发生这种情况吗?

好吧,一个请求是
的标准帖子,第二个请求是自定义
,当单击发生时,它与提交链接在一起

一种解决方案是通过如下更改按钮类型来抑制标准提交:

另一种选择是根本不使用
。相反,请使用以下命令:

<f:setPropertyActionListener target="#{outageManagementAction.deleteEngineId}" value="193" />

您可以这样更改命令按钮: