Navigation
Es gibt für die Navigation zu einer anderen URL zwei Möglichkeiten:
navigation->goto_page zu einer Page oder einem Controller
<bsp:goto>-Element zu einem Controller
navigation->goto_page
Bei
goto_page wird ein Redirect zu der angegebenen Seite (oder zu dem Controller) gemacht, d.h. dem Browser wird mitgeteilt, dass er eine andere Seite anfordern möge. Danach erfolgt ein neuer Browser-Request zu der Zielseite.
Das hat folgende Auswirkungen:
- Der Browser kennt die URL der Zielseite, denn er hat sie selbst angefordert. Falls die Seite nicht in einem Frame läuft, wird deren URL in der Adress-Zeile des Browsers angezeigt.
- Es ist ein zusätzlicher Browser-Request notwendig, was zu erhöhter Netzlast führt. Auch wenn die Menge der Daten klein ist, kann es bei sehr langsamen Netzen (z.B. über Satellit) dennoch zu Verzögerungen kommen.
- Im stateless Fall sind alle temporären Daten aus der bisherigen Verarbeitung verloren.
<bsp:goto>-Element
Beim
<bsp:goto>-Element wird der neue Controller oder View aufgerufen, um den Inhalt für den aktuellen Request zu liefern.
Dies hat folgende Konsequenzen:
- Der Browser kennt die URL der Zielseite nicht, sondern er meint, mit der bisherigen Seite zu kommunizieren.
- Es ist kein zusätzlicher Browser-Request notwendig.
- Ist in der
form der Zielseite kein target angegeben, so wird der Request, der aus dem Abschicken der form (oder auch durch refresh) resultiert, an die aufrufende Seite geleitet. Die Zielseite hat somit nur die Aufgabe, das HTML zu erzeugen (View), und braucht sich in der Regel nicht um die Eingaben zu kümmern. Dies übernimmt die Aufrufseite. Diese übernimmt somit die Controller-Funktionalität.
Es findet kein Wechsel des Workprozesses statt, d.h. auch in einer stateless Anwendung bleibt der Kontext erhalten und Sie können somit auf die schon erzeugten Objekte und Daten zugreifen.
- Der Controller muss anhand des Inputs entscheiden können, in welchem „Zustand" er sich gerade befindet, wenn er mehrere Views hintereinander anzeigen soll. Dieser Zustand sollte er sich nicht am Server speichern, da sonst die Verarbeitung von „Back" nicht korrekt funktionieren würde. Bei unterschiedlichen URLs über Redirect ist dies leichter.
- Bei der Verwendung von verschiedenen Views ändert sich die URL nicht. Daher können Sie keine Bookmarks auf diese Seiten verwenden.
Worauf zeigt page_name?
runtime->page_name
zeigt immer auf die extern angesprochene Seite bzw. den Controller. Name und URL holt man mit page->get_page_name() bzw. page->get_page_url().
Lebenszeit des aufgerufenen Views
Die Lebenszeit des aufgerufenen Views ist nur auf den Aufruf beschränkt. Weitere Informationen finden Sie unter
Lebensdauer und in Hinweis 545847.