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

use*_*528 10 jsf-2

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

提前致谢

Bal*_*usC 28

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

<f:metadata>
    <f:viewParam name="paramName" value="#{bean.paramName}" />
    <f:viewAction action="#{bean.check}" />
</f:metadata>
Run Code Online (Sandbox Code Playgroud)

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

private String paramName; // +getter+setter

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

    return null;
}
Run Code Online (Sandbox Code Playgroud)

当不在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>
Run Code Online (Sandbox Code Playgroud)
private String paramName; // +getter+setter

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

也可以看看: