2

我正在使用 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脚本功能:

<head>
<script type="text/javascript">
    $(document).callCorrelation(function() {
        correlation ();
    });           
</script>
</head>

但它没有用。

有没有其他方法可以同时调用两个 bean 方法?

4

1 回答 1

6

您的具体问题是由于您关闭了 ajax 引起的ajax="false"。这将创建一个同步表单提交,这使得无法触发 ajax 请求。如果您删除ajax="false",那么它可能会起作用,但是如果一种方法取决于另一种方法的结果,那么您仍然存在竞争条件。没有定义先执行哪个。

最好只使用一个命令组件。可以actionactionListener一起使用。action用于业务操作。actionListener旨在准备业务操作。如果您需要更多动作侦听器,只需嵌套 a<f:actionListener>或也许 a <f:setPropertyActionListener>

<p:commandButton value="Submit"
    actionListener="#{userBean.correlation}"
    action="#{userBean.execute}"
    update="correlationDialog" />

也可以看看:

于 2013-09-17T14:02:23.573 回答