Как выполнить навигацию в методе прослушивателя preRenderView

Я начинаю сДля чего могут использоваться <f: metadata>, <f: viewParam> и <f: viewAction>?

У меня есть прослушиватель события предварительного просмотра:

<f:metadata>
    <f:event type="preRenderView" listener="#{loginBean.performWeakLogin()}" />
</f:metadata>

который вызывает следующий метод:

public String performWeakLogin() {
    FacesContext facesContext = FacesContext.getCurrentInstance();
    String parameter_value = (String) facesContext.getExternalContext().getRequestParameterMap().get("txtName");

    if (parameter_value != null && parameter_value.equalsIgnoreCase("pippo")) {
        try {
            return "mainPortal";
        } catch (IOException ex) {
            return null;
        }
    } else {
        return null;
    }
}

и следующее правило навигации:

<navigation-rule>
    <from-view-id>/stdPortal/index.xhtml</from-view-id>
    <navigation-case>
        <from-outcome>mainPortal</from-outcome>
        <to-view-id>/stdPortal/stdPages/mainPortal.xhtml</to-view-id>
        <redirect/>
    </navigation-case>
</navigation-rule>

Тем не менее, он не выполняет навигацию. Это работает, когда я использую командную кнопку следующим образом:

<p:commandButton ... action="#{loginBean.performWeakLogin()}"  /> 

Ответы на вопрос(2)

Ваш ответ на вопрос