【发布时间】:2012-12-25 17:17:46
【问题描述】:
我正在使用OmniFaces FullAjaxExceptionHandler 和 PrimeFaces。我在errorPage.xhtml中添加了一个命令按钮如下:
<h:form>
<p:commandButton id="logoutButtonId" value="Redirect" actionListener="#{userMB.logout()}">
</h:form>
错误页面正确显示,但按钮未触发方法#{userMB.logout()}。
这就是我所理解的设置中发生的情况:
- 如果发生错误,
FullAjaxExceptionHandler会很好地显示errorPage.xhtml。 - 如果我点击我添加的按钮,页面会使用相同的数据进行更新,就像发生了刷新一样。
- 如果我再次单击该按钮,则会触发托管 bean 方法。
只有在第二次单击时才会调用 bean 方法。似乎在第一次加载时,bean 方法没有绑定到对象。
当使用FullAjaxExceptionHandler 时,如何实现在错误页面中添加命令按钮,并将动作/动作侦听器正确绑定到 HTML 组件?
【问题讨论】:
-
您好,我看到您试图通过编辑发表评论。这不是它在这里的工作方式。添加 cmets 应通过“添加评论”链接完成。
-
@BalusC,谢谢你,我是个新手。您能否解释一下“请注意,这些脚本需要放在调用 ajax 操作的页面上,而不是放在错误页面本身上。”我的困境是我想在错误页面中添加一个按钮,因此在错误页面中调用该操作?提前致谢!
-
导致异常的页面。这些脚本应该在 ajax 异常处理期间执行。请注意,每个答案还有一个“添加评论”链接。
-
当显示错误页面时,我可以在部分响应中看到视图状态 ID,但尽管包含脚本,但隐藏的输入并未被添加。它只会在第二次点击时添加。我还能错过什么?
-
好的,让我们先说清楚。您有 2 个页面:A 和 B。页面 A 中的 ajax 请求会导致异常。页 B 是错误页。脚本应该在页面 A 中加载。您确定是这种情况吗?需要更多信息来确定问题:1)您在页面 A 中使用什么来触发 ajax 请求?
<f:ajax>或者来自 PrimeFaces 的东西? 2)您使用的是哪种浏览器? IE还是其他?
标签: jsf primefaces action omnifaces