在JSF2中加载页面之前重定向

时间:2012-03-07 08:58:09

标签: jsf-2

我要求在页面加载之前我想检查查询字符串是否存在,如果查询字符串存在,那么我想重定向到另一个页面而不是当前页面如何处理这种类型的需求JSF 2。

提前致谢

1 个答案:

答案 0 :(得分:27)

在JSF 2.2上,您可以使用<f:viewAction>

<f:metadata>
    <f:viewParam name="paramName" value="#{bean.paramName}" />
    <f:viewAction action="#{bean.check}" />
</f:metadata>

paramName是查询字符串参数的名称)

private String paramName; // +getter+setter

public String check() {
    if (paramName == null) {
        return "error.xhtml";
    }

    return null;
}

当还没有使用JSF 2.2时(JSF 2.0 / 2.1),您可以使用<f:event type="preRenderView">

<f:metadata>
    <f:viewParam name="paramName" value="#{bean.paramName}" />
    <f:event type="preRenderView" listener="#{bean.check}" />
</f:metadata>
private String paramName; // +getter+setter

public void check() throws IOException {
    if (paramName == null) {
        FacesContext.getCurrentInstance().getExternalContext().redirect("error.xhtml");
    }
}

另见: