我有一个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}" />
答案 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。