Beispiel für eine JSF-Navigationsregel "from-action"

Beispiel für eine JSF-Vorgangsnavigationsregel

In der JSF-Navigationsregel kann es vorkommen, dass zwei separate Aktionen auf einer Seite dieselben „outcome“ zurückgeben. In diesem Fall können Sie das Element "from-action" verwenden, um die beiden Navigationsfälle zu unterscheiden. Siehe folgendes Beispiel:

1. Managed Bean

Eine verwaltete Bean mit zwei Aktionen, die dasselbe Ergebnis liefern - "Erfolg".

PageController.java

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import java.io.Serializable;

@ManagedBean
@SessionScoped
public class PageController implements Serializable {

    private static final long serialVersionUID = 1L;

    public String processPage1(){
        return "success";
    }

    public String processPage2(){
        return "success";
    }
}

2. JSF Seite

Eine JSF-Seite mit 2 Schaltflächen, die mit den oben genannten Methoden vonPageControllerverknüpft sind.

start.xhtml




    
    

This is start.xhtml

Beide Aktionen führen zu demselben „Erfolgsergebnis“. Wie kann JSF bestimmen, wohin es gehen soll?

3. Navigationsregel

Um dies zu lösen, definieren Sie die folgenden Navigationsregeln in „faces-config.xml“ und verwenden Sie das Element „from-action“, um dieselben Navigationsfälle mit „Ergebnis“ zu unterscheiden.

faces-config.xml



    
    start.xhtml
    
        #{pageController.processPage1}
        success
        page1.xhtml
    
    
        #{pageController.processPage2}
        success
        page2.xhtml
    
    

4. Demo

In obigem Fall funktioniert die Schaltfläche folgendermaßen:

  1. Wenn Sie auf die Schaltfläche mitaction=”#\{pageController.processPage1}” klicken, wird das Ergebnis "Erfolg" zurückgegeben und zupage1.xhtml verschoben

  2. Wenn Sie auf die Schaltfläche mitaction=”#\{pageController.processPage2}” klicken, wird das Ergebnis "Erfolg" zurückgegeben und zupage2.xhtml verschoben

Quellcode herunterladen

Laden Sie es herunter -JSF-2-From-Action-Navigation-Example.zip (11 KB)