1

在 jsf 2 项目中,隐藏了 ID 为“displayDialog”的 commandButton。它由 javascript 函数触发:

 document.getElementById('displayDialog').click();

问题是,我需要在“oncomplete”阶段执行点击操作,而不是“onclick”(原因由@BalusC here解释)。

我试着做:

    <p:commandButton style="display: none" id="displayDialog" type="button" onclick="" oncomplete="cd.show();"/>

或者

    <p:commandButton style="display: none" id="displayDialog" type="button" onclick="return false;" oncomplete="cd.show();"/>

但在这两种情况下 cd.show() 都没有采取行动。这应该怎么做?

(我应该在 onclick 属性中添加一个虚拟操作吗?如果可以,是哪一个?)

4

1 回答 1

2

oncomplete方法在ajax请求之后调用,当你说的时候type="button",不会发出ajax请求。

也就是说,只需删除type="button"参数,您根本不必实现onclick

<p:commandButton style="display: none" 
                 id="displayDialog" 
                 oncomplete="cd.show();"/>

但是,您真的需要从 JavaScript 函数调用按钮吗?如果有另一个组件发出第一个请求,你不能只实现那个组件的oncomplete方法吗?

在您的代码中,p:commandButton根本没有任何操作,那您为什么需要等待操作完成?你是提交表格还是什么?

也许如果你准确地解释你想要做什么,我们可以想出一个更好的方法来做到这一点。

于 2012-10-28T14:57:21.043 回答