So führen Sie die Navigation in der preRenderView-Listener-Methode durch

Ich fange an vonWofür können <f: metadata>, <f: viewParam> und <f: viewAction> verwendet werden?

Ich habe einen Listener für Ereignisse vor dem Rendern:

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

Das ruft die folgende Methode auf:

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;
    }
}

und die folgende Navigationsregel:

<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>

Die Navigation wird jedoch nicht ausgeführt. Es funktioniert, wenn ich eine Befehlsschaltfläche wie folgt verwende:

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

Antworten auf die Frage(2)

Ihre Antwort auf die Frage