我正在使用primefaces-4.0构建一个Web应用程序。我想在点击命令按钮的同时调用两个bean方法。我尝试使用 remoteCommand 。
<p:commandButton value="Submit" ajax="false"
actionListener="#{userBean.execute}"
onclick="callCorrelation()">
</p:commandButton>
<p:remoteCommand name="correlation" update="correlationDialog"
actionListener="#{userBean.correlation}" />
Java Script函数:
<head>
<script type="text/javascript">
$(document).callCorrelation(function() {
correlation ();
});
</script>
</head>
但它不起作用。
还有其他方法可以同时调用两个bean方法吗?
答案 0 :(得分:5)
您的具体问题是因为您已ajax="false"
关闭了ajax。这将创建一个同步表单提交,这使得无法触发ajax请求。如果您删除ajax="false"
,那么它可能会起作用,但如果一种方法取决于另一种方法的结果,那么您仍然处于竞争状态。它没有定义首先执行哪一个。
最好只使用一个命令组件。您可以一起使用action
和actionListener
。 action
用于商业行为。 actionListener
旨在准备商业行为。如果您需要更多动作侦听器,只需嵌套<f:actionListener>
或<f:setPropertyActionListener>
。
<p:commandButton value="Submit"
actionListener="#{userBean.correlation}"
action="#{userBean.execute}"
update="correlationDialog" />