将用户重定向到f:event listener方法的不同页面

时间:2012-05-14 11:30:00

标签: jsf jsf-2

我有以下代码用于根据url参数初始化bean值。

<f:metadata>
    <f:viewParam name="id" value="#{inningBean.inningId}" />
    <f:event type="preRenderView" 
        listener="#{inningBean.initInningBeanForBallByBallScoring}" />
</f:metadata>

这很好用。但我希望在某些情况下(例如某些验证),用户将从侦听器方法重定向到另一个页面。

我该怎么做?

1 个答案:

答案 0 :(得分:4)

使用ExternalContext#redirect()

public void initInningBeanForBallByBallScoring() throws IOException {
    // ...

    if (someCondition) {
        ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
        ec.redirect(ec.getRequestContextPath() + "/other.xhtml");
    }
}