【问题标题】:a4j:commandButton oncomplete not firinga4j:commandButton oncomplete 未触发
【发布时间】:2012-07-23 13:35:56
【问题描述】:

我们正在将应用程序迁移到较新版本的 RichFaces 和 JSF(我相信分别为 4.2.2 和 2.0),并且我正在尝试进行必要的调整以使应用程序像以前一样运行(我不没有大量的 jsf/richfaces 经验)。

在我们的一个页面上,当我们单击一个按钮时,我们需要显示一个弹出窗口,上面写着“请稍等...”,并且在处理完成后,弹出窗口需要消失。我开始尝试这样的事情:

<a4j:commandButton id="viewEditTop" value="#{SearchBean.mode}"
                        action="#{SearchResultsBean.processSelected}"
                        styleClass="generalButton" onclick="#{rich:component('wait-dialog')}.show()" oncomplete="#{rich:component('wait-dialog')}.hide()"/>

但是 oncomplete 似乎没有触发。弹出窗口会显示,但永远不会消失。经过大量研究并尝试了各种事情(主要是尝试调用 a4j:status 并尝试查找有关如何触发 oncomplete、状态和诸如此类的详细信息),我不知道下一步该做什么。

有谁知道如何让 oncomplete 启动?或者如果我应该使用 a4j:status,我将如何让状态正常工作?我定义了状态,添加了“onstart”和“onstop”来显示/隐藏弹出窗口,并将我的 a4j:commandButton 状态设置为引用我创建的状态,但它不起作用。

谢谢!

【问题讨论】:

  • 尝试删除该动作并在“oncomplete”方法中添加console.log('your custom message'),以检查该动作是否已被调用。之后,确保SearchResultsBean.processSelected 方法不返回字符串并且不产生任何异常。
  • 感谢您的信息,我得稍微研究一下弦理论。 processSelected 方法确实返回一个字符串。为什么这会导致问题?使用旧版本的 jsf/richfaces 他们有一个 oncomplete 方法,即使 processSelected 返回一个字符串也可以工作。它返回的字符串用于在 faces-config.xml 中配置的导航(尽管在返回空字符串时遇到问题的情况下,我只是希望弹出窗口消失而不是导航到不同的页面)。
  • 导航触发时,“oncomplete”方法不会触发。对于这种情况,您可以使用 &lt;a4j:status onstart="#{rich:component('wait-dialog')}.show()" onstop="#{rich:component('wait-dialog')}.hide()" /&gt;,并从您的 &lt;a4j:commandButton&gt; 中删除这些呼叫
  • 您找到解决方案了吗?遇到完全相同的问题。
  • 抱歉@Dave4988 回复晚了,但原来是我们使用的外部库引起的。

标签: jsf-2 richfaces


【解决方案1】:
<a4j:commandButton id="viewEditTop" value="#{SearchBean.mode}"
                            action="#{SearchResultsBean.processSelected}"
                            styleClass="generalButton" onbegin="#{rich:component('wait-dialog')}.show()" oncomplete="#{rich:component('wait-dialog')}.hide()"/>

你可以试试这个我认为它会工作 4 u...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-12
    • 2015-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多