在会话bean @PostConstruct中重定向

时间:2013-10-03 23:04:24

标签: jsf redirect

我有一个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方法中完成的?

2 个答案:

答案 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?