我有一个JSF 2.0应用程序,它有一个可以从home.xhtml访问的会话bean,如下所示:
@Named(value = "home")
@SessionScoped
public class Home implements Serializable{
@PostConstruct
public void init() {
// Retrieve database data here
try {
} catch (Exception ex) {
System.out.println("EXCEPTION");
}
}
}
我想要做的是,如果数据库检索失败,请重定向到error.xhtml页面。这是如何在上面的init方法中完成的?
答案 0 :(得分:2)
您可以使用External Context's redirect(java.lang.String)
方法。
FacesContext facesContext = FacesContext.getCurrentInstance();
ExternalContext externalContext = facesContext.getExternalContext();
externalContext.redirect("page2.xhtml");
答案 1 :(得分:1)
无需手动弄乱重定向。直接抛出异常。
@PostConstruct
puclic void init() throws Exception { // Please be more specific, e.g. SQLException.
// Retrieve database data here without try/catch block.
}
它已经在HTTP 500错误页面中结束,其位置(因此看起来像'感觉')可以由web.xml
自定义:
<error-page>
<error-code>500</error-code>
<location>/WEB-INF/errorpages/500.xhtml</location>
</error-page>
如果您还希望涵盖ajax请求的例外情况,请转到以下答案:What is the correct way to deal with JSF 2.0 exceptions for AJAXified components?