按钮和bean方法之间的错误处理

时间:2013-08-20 15:21:01

标签: jsf jsf-2

我有一个jsf按钮,它调用一个名为generateLicense的bean方法。这个bean方法返回一个字符串来执行重定向,就像这个

"/licenseGenerated.xhtml?faces-redirect=true"

此方法应根据用户的输入执行多个后端调用。现在,这意味着我必须添加一些错误处理。这是我需要的行为。

用户访问应用程序并位于main.xhtml页面中。用户输入值并单击按钮。如果整个过程正常,则应将用户重定向到/licenseGenerated.xhtml页面。否则,如果发生错误,我不需要重定向。我需要的是在main.xhtml页面上呈现包含错误消息的jsf组件。

那么,如果出现错误,generateLicense方法应该返回什么,以及按钮的jsf代码是什么样的呢?

感谢您的帮助!

- 编辑 -

在bean的方法执行期间将检测到错误。这是基于休息服务的响应。简单地说,服务有两种可能的结果。 200(OK),在这种情况下,需要重定向,或者在用户输入错误的情况下需要400(未找到)。所以,java方法看起来像这样:

public String generateLicenseFile(){
   String response = ""; 
   ... // all the back-end computations
   if(response == "200"){
       return "/licenseGenerated.xhtml?faces-redirect=true";
   }else{
       //ERROR HANDLING. 
   }
}

这是按钮的当前代码。

<h:commandButton value="Generate License File" action="#{agreement.generateLicenseFile}" /> 

1 个答案:

答案 0 :(得分:1)

只需添加一条面孔消息并返回null

} else {
    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(
        FacesMessage.SEVERITY_ERROR, "Sorry, generating license file has failed. Please try again later.", null));
    return null;
}

null客户端ID进行FacesContext#addMessage()调用会使其成为所谓的全局消息,您可以使用<h:messages>过滤掉,如下所示:

<h:messages globalOnly="true" />

返回null会使其返回与调用此操作的视图相同的视图。


对具体问题

无关if (response == "200")确实没有按照您的想法行事。我建议花更多的时间学习基本的Java。