0

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

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

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

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

那么,generateLicense 方法在出错的情况下应该返回什么,按钮的 jsf 代码会是什么样子呢?

谢谢您的帮助!

-编辑-

在 bean 的方法执行期间将检测到错误。这是基于来自休息服务的响应。简单地说,该服务有两种可能的结果。200(OK),在这种情况下,需要重定向,或者 400(NOT FOUND),以防用户输入错误。因此,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}" /> 
4

1 回答 1

1

只需添加一个 faces 消息并返回null

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

对客户端 ID的FacesContext#addMessage()调用null将使其成为所谓的全局消息,您可以<h:messages>按如下方式过滤掉它:

<h:messages globalOnly="true" />

返回null将使其返回到调用此操作的同一视图。


与具体问题无关if (response == "200"),实际上并没有像您认为的那样做。我建议花更多时间学习基本的 Java。

于 2013-08-20T15:52:02.787 回答