如何同时使用导航规则和 f:ajax

Posted

技术标签:

【中文标题】如何同时使用导航规则和 f:ajax【英文标题】:How to use both Navigation Rule and f:ajax 【发布时间】:2012-02-25 18:34:55 【问题描述】:

这是我的场景:在某些情况下,我想通过 Ajax 更新页面,在其他情况下,执行导航规则。我的用例是登录表单。如果他们的 uname/password 失败,我希望他们通过 ajax 接收错误消息,但如果成功则导航到新页面。

有没有人使用 JSF2.0 f:ajax apis 做到这一点?我对超出标准 facelets、jsf2.0 等的解决方案并不感兴趣。

【问题讨论】:

【参考方案1】:

这与不使用 ajax 时没有什么不同。只需通过<h:commandXxx action>(因此不是<f:ajax listener>)将下一个视图ID返回为String

所以,只是

<h:commandButton value="Login" action="#bean.login">
    <f:ajax execute="@form" render="@form" />
</h:commandButton>

public String login() 
    // ...

    return "nextpage";

与没有&lt;f:ajax&gt; 时一样好。它只会转到nextpage.xhtml

另见:

Differences between action and actionListener JSF f:ajax listener vs commandButton action

【讨论】:

整洁!如果你想留在'当前页面',你只需返回“”我发现。哇,这一点都不难! 不客气。当你想导航回同一个视图时,而不是返回null(或void,如果可能的话)而不是空字符串,这样视图(和视图范围的bean,如果有的话)将被重用而不是重新创建。

以上是关于如何同时使用导航规则和 f:ajax的主要内容,如果未能解决你的问题,请参考以下文章

如何在遵守钩子规则的同时正确使用 useRouter?

bootstrap响应式导航条规则

我可以在 JSF 导航规则中使用通配符 * 吗?

如何在 iOS 中创建滑动导航(在 Objective-C 中)

如何通过Matlab检测红色圆圈中不规则放置的瓶子,同时排除那些规则圆形瓶子?

JSF2 <h:selectOneMenu 和 <f:ajax 侦听器在 PrettyFaces 过滤器导航之后未调用