Перенаправление перед загрузкой страницы в JSF2

У меня есть требование, чтобы перед загрузкой страницы я хочу проверить, существует ли строка запроса или нет, если строка запроса существует, тогда я хочу перенаправить на другую страницу вместо текущей страницы, как я могу справиться с этим типом требования в JSF 2.

Заранее спасибо

Ответ 1

Если на 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");
    }
}

См. также: