【问题标题】:primefaces p:commandButton using both actionListener and action attrributesprimefaces p:commandButton 使用 actionListener 和 action 属性
【发布时间】:2014-09-12 21:14:43
【问题描述】:

我正在使用jsf 2primefaces 4
我已经通过以下链接Click Here 并在我的应用程序中使用,actionListener 用于执行验证逻辑以及业务逻辑。
action 属性用于重定向。

所以这很好,但如果我得到任何验证错误,我必须在同一页面上显示它们。这意味着它是 ajax 响应。
我测试了这个案例,即使有验证错误,它也会重定向到action属性中提到的另一个页面

如果没有验证错误,它应该被重定向到另一个页面,在这种情况下这不是 ajax 响应。
那么如何处理这两种情况呢?
任何帮助都非常感谢

【问题讨论】:

  • 为什么要把事情复杂化?只需调用 action 方法并在 action 内部进行验证,然后根据结果决定将用户指向何处,如果验证失败则不返回任何内容或重定向。
  • @HatemAlimam 感谢您的想法,我对其进行了测试。按预期工作。还有一件事,我如何将参数传递给新页面以显示上一页执行的操作通知?
  • 使用f:param
  • 如果您想在下一页显示确认消息,您可以尝试正常添加全局 FacesMessage 并使用 FacesContext.getCurrentInstance().getExternalContext().getFlash().setKeepMessages(true);为我工作过一次,但不记得当时的情况

标签: ajax jsf jsf-2 primefaces


【解决方案1】:

我已按照 @Hatem Alimam@Jaqen H'ghar 在 cmets 中给出的说明实现了这一点。
解决方案: 我使用action 执行验证和业务逻辑,并基于successerrors 进行重定向。
重定向到另一个页面后,使用flash scope 显示通知非常有用。

FacesContext.getCurrentInstance().getExternalContext().getFlash().setKeepMessage‌​s(true);

【讨论】:

    猜你喜欢
    • 2013-10-22
    • 2013-06-27
    • 1970-01-01
    • 2013-01-14
    • 2014-12-26
    • 1970-01-01
    • 2015-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多