如何根据操作结果有条件地调用 a4j:commandButton oncomplete 脚本

发布于 2024-10-28 03:47:10 字数 253 浏览 1 评论 0原文

我有一个

<a4j:commandButton action="#{myBean.doCalculation}"
                   oncomplete="redirectBrowser()" />

但是,如果 myBean.doCalculation() 出现错误,则始终调用 oncomplete 属性。我如何让它取决于操作方法的结果?

I have a

<a4j:commandButton action="#{myBean.doCalculation}"
                   oncomplete="redirectBrowser()" />

However, if there is an error at myBean.doCalculation(), then oncomplete attribute is always invoked. How do I let it depend on result of action method?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

末が日狂欢 2024-11-04 03:47:10

您可以检查 oncomplete 事件中的错误,并在未找到错误时重定向。可以这样做

oncomplete="#{facesContext.maximumSeverity == null ? 'redirectBrowser()' : 'doSomethingElse()'}"

You can check for errors in the oncomplete event and redirect when none are found. It can be done like this

oncomplete="#{facesContext.maximumSeverity == null ? 'redirectBrowser()' : 'doSomethingElse()'}"
七堇年 2024-11-04 03:47:10

如果您使用的是 JSF 2.0,则可以使用 FacesContext#isValidationFalied() 检查验证是否失败:

oncomplete="if (#{not facesContext.validationFailed}) redirectBrowser()"

但是,仅在操作方法中执行重定向会更干净:

public String doCalculation() {
    // ...

    if (success) {
        return "nextPage.xhtml?faces-redirect=true";
    } else {
        return null;
    }
}

然而,更干净的是只是通过验证器进行验证。这样,当验证失败时,根本不会调用操作方法。

If you're on JSF 2.0, you can use FacesContext#isValidationFalied() to check if validation has failed or not:

oncomplete="if (#{not facesContext.validationFailed}) redirectBrowser()"

However, just performing redirect in the action method is more clean:

public String doCalculation() {
    // ...

    if (success) {
        return "nextPage.xhtml?faces-redirect=true";
    } else {
        return null;
    }
}

Yet more clean would be to just do the validation by a Validator. This way the action method will simply not be invoked at all when the validation has failed.

嘿看小鸭子会跑 2024-11-04 03:47:10

好吧,仅仅查找 facesContext.maximumSeverity == null 是不够的,可能会出现当前最大严重性的警告,也应该重定向。相反,编写一个方法来检查是否存在任何最大严重程度的优先级错误......

Well, just looking for facesContext.maximumSeverity == null is not enough, there may be a warning as current max severity, that should redirect, too. Instead, write a method that looks if there are any max severities of priority error...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文