In JSF 1.2 muss die gesamte Seitennavigation in der Datei "gesichter-config.xml" wie folgt deklariert werden:
... <Navigationsregel> <from-view-id> page1.xhtml </from-view-id> <Navigationsfall> <Von-Ergebnis> Seite2 </Von-Ergebnis> <to-view-id>/page2.xhtml </to-view-id> </navigation-case> </navigation-rule> ...
In JSF 2 wird "result" als Seitenname behandelt. Navigieren Sie beispielsweise zu "page1.xhtml", müssen Sie das "result" als "page1" angeben. Dieser Mechanismus wird als implizite Navigation bezeichnet. Wenn Sie nicht die langwierige Navigationsregel deklarieren müssen, fügen Sie einfach das "Ergebnis" direkt in das Aktionsattribut ein. JSF findet automatisch die richtige " view id " .
Es gibt zwei Möglichkeiten, die implizite Navigation in JSF 2 zu implementieren.
1. Ergebnis auf der JSF-Seite
Sie können das "Ergebnis" direkt in die JSF-Seite einfügen.
<h:form> <h:commandButton action="page2" value="Move to page2.xhtml"/> </h:form>
Sobald die Schaltfläche angeklickt ist, führt JSF den Aktionswert oder das Ergebnis " page2 " mit der Erweiterung " xhtml " zusammen und sucht den Ansichtsnamen " page2.xhtml " in der aktuellen " page1.xhtml " Verzeichnis.
2. Ergebnis in Managed Bean
Außerdem können Sie das "Ergebnis" in einer verwalteten Bean wie folgt definieren:
-
PageController.java **
@ManagedBean @SessionScoped public class PageController implements Serializable { public String moveToPage2(){ return "page2";//outcome } }
Auf der JSF-Seite "action" -Attribut rufen Sie die Methode einfach mit " method expression " auf.
-
page1.xhtml **
<h:form> <h:commandButton action="#{pageController.moveToPage2}" value="Move to page2.xhtml by managed bean"/> </h:form>
Umleitung
Standardmäßig führt JSF 2 eine Vorwärtsbewegung aus, während zu einer anderen Seite navigiert wird. Dies hat zur Folge, dass die Seiten-URL immer hinter einer :) liegt. Wenn Sie beispielsweise von "page1.xhtml" zu "page2.xhtml" wechseln, wird in der Adressleiste des Browsers immer noch die URL "page1.xhtml" angezeigt.
Um dies zu vermeiden, können Sie JSF anweisen, die Umleitung zu verwenden, indem Sie das Zeichen " faces-redirect = true " an das Ende der Zeichenfolge "result" anhängen.
<h:form> <h:commandButton action="page2?faces-redirect=true" value="Move to page2.xhtml"/> </h:form>
-
Hinweis + Für die einfache Seitennavigation reicht diese neue implizite Navigation mehr als aus. Bei einer komplexen Seitennavigation dürfen Sie den Seitenfluss (Navigationsregel) weiterhin in der Datei faces-config.xml ** angeben.
Quellcode herunterladen
Laden Sie es herunter - JSF-2-Implicit-Navigation-Example.zip (10KB)