Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 在primefaces中同时调用多个bean方法_Jsf 2_Primefaces - Fatal编程技术网

Jsf 2 在primefaces中同时调用多个bean方法

Jsf 2 在primefaces中同时调用多个bean方法,jsf-2,primefaces,Jsf 2,Primefaces,我正在使用primefaces-4.0构建一个web应用程序。我想在单击命令按钮时同时调用两个bean方法。我使用远程命令尝试了它 <p:commandButton value="Submit" ajax="false" actionListener="#{userBean.execute}" onclick="callCorrelation()">

我正在使用primefaces-4.0构建一个web应用程序。我想在单击命令按钮时同时调用两个bean方法。我使用远程命令尝试了它

<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>

$(文档).callCorrelation(函数(){
相关性();
});           
但它没有起作用


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

您的具体问题是因为您通过
ajax=“false”
关闭了ajax。这将创建一个同步表单提交,从而不可能同时触发ajax请求。如果删除
ajax=“false”
,那么它可能会工作,但是如果一个方法依赖于另一个方法的结果,那么仍然存在竞争条件。它没有定义哪一个将首先被执行

最好只使用一个命令组件。您可以同时使用
action
actionListener
操作
用于业务操作。
actionListener
用于准备业务操作。如果您需要更多操作侦听器,只需嵌套一个
或一个


另见:

您可以为
action
属性设置一种方法,为
actionListener
属性设置一种方法。谢谢你,巴卢斯。我尝试过删除ajax,但没有成功。我还尝试了您建议的单命令组件,但在这种方法中,它是先执行关联方法,然后执行方法……但我想同时执行两个方法,而不是一个接一个地执行……那么有没有其他方法可以同时执行两个方法呢?你到底为什么要这样做?你知道你需要两个线程吗?上面的答案只是在1终端用户交互中执行这两个方法。是的,完全正确。我需要并行运行的线程。但在实现线程之前,我正在寻找其他选项。如何在JSF中同时运行两个bean方法而不实现线程。实际上,问题是如果我将这两个方法加上边框并创建一个单击submit按钮后执行的单个bean方法。执行和加载xhtml页面需要花费太多时间。为了最小化此加载和执行时间,我将此单个方法转换为两种不同的方法。
<p:commandButton value="Submit"
    actionListener="#{userBean.correlation}"
    action="#{userBean.execute}"
    update="correlationDialog" />