【发布时间】: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”方法不会触发。对于这种情况,您可以使用
<a4j:status onstart="#{rich:component('wait-dialog')}.show()" onstop="#{rich:component('wait-dialog')}.hide()" />,并从您的<a4j:commandButton>中删除这些呼叫 -
您找到解决方案了吗?遇到完全相同的问题。
-
抱歉@Dave4988 回复晚了,但原来是我们使用的外部库引起的。