我有一个
<a4j:commandButton action="#{myBean.doCalculation}"
oncomplete="redirectBrowser()" />
但是,如果myBean.doCalculation()
出现错误,则始终会调用oncomplete
属性。我如何让它取决于行动结果的方法?
答案 0 :(得分:4)
您可以检查oncomplete事件中的错误,并在找不到任何事件时重定向。它可以这样做
oncomplete="#{facesContext.maximumSeverity == null ? 'redirectBrowser()' : 'doSomethingElse()'}"
答案 1 :(得分:3)
如果您使用的是JSF 2.0,则可以使用FacesContext#isValidationFalied()
检查验证是否失败:
oncomplete="if (#{not facesContext.validationFailed}) redirectBrowser()"
但是,只需在action方法中执行重定向就更干净了:
public String doCalculation() {
// ...
if (success) {
return "nextPage.xhtml?faces-redirect=true";
} else {
return null;
}
}
更简洁的是,只需通过Validator
进行验证即可。这样,当验证失败时,根本不会调用action方法。
答案 2 :(得分:2)
好吧,只是查找facesContext.maximumSeverity == null是不够的,可能会有一个警告作为当前最大严重性,也应重定向。相反,编写一个方法,查看是否存在任何最大严重性错误严重性......