Controller sind die aktiven Teile einer Web-Dynpro-Anwendung, sie legen fest, wie der Benutzer mit der Web-Dynpro-Anwendung agieren kann. Die Daten, auf die ein Controller zugreifen kann, sind im zugehörigen Context definiert. In einer Web-Dynpro-Anwendung existieren verschieden ausgeprägte Controller und Contexte. Neben View-Controllern, die das Verhalten einer einzelnen View steuern gibt es auch globale Controller, die allgemeinere Services für alle Views einer Component anbieten.
Zu jeder View gehört zum einen genau ein View-Controller, der die Aktionen des Benutzers auf der View verarbeitet. Zum anderen besitzt eine View genau einen View-Context in dem die benötigten Daten vorgehalten werden.
Ein View-Controller und der zugehörige Context lebt mindestens so lange, wie die jeweilige View im Browser sichtbar ist: Wird die View durch eine Nachfolge-View ersetzt, sind auch die lokalen Daten nicht mehr vorhanden. Die Lebensdauer kann jedoch auch an die Lebensdauer der umgebenden Component gebunden werden.
Unter Umständen kann eine View als Teil eines View-Sets im technischen Sinne sichtbar sein, auf dem Bildschirm jedoch könnte ihr Inhalt beispielsweise als verdeckte Registerkarte im Hintergrund liegen. In diesem Fall sind die Daten der View nach wie vor vorhanden, die View lebt.
Jede Web-Dynpro-Component besitzt zudem auch mindestens einen globalen Controller welche innerhalb der Component für alle anderen Controller sichtbar sind. Nachdem die Daten dieses Component-Controllers mit ihrem ersten Zugriff erzeugt wurden, erstreckt sich ihre Lebensdauer auf die Nutzungsdauer der jeweiligen Component.
Weitere globale Controller können Sie in Form von Custom-Controllern hinzufügen. Auch sie existieren so lange wie die Component und die in ihnen enthaltenen Daten stehen allen Views der Component optional zur Verwendung zur Verfügung.
Mit jedem Web-Dynpro-Window wird der Component ein weiterer globaler Controller, der Window-Controller hinzugefügt.
Jede Web-Dynpro-Component besitzt genau einen so genannten Interface-Controller. Dieser Controller ist ein globaler Controller, welcher zusätzlich auch außerhalb der Component sichtbar ist. Er ist damit Teil der Schnittstelle einer Web-Dynpro-Component.
Die Kommunikation von einem Controller zum nächsten erfolgt durch den Aufruf von Methoden eines anderen Controllers oder durch das Auslösen eines Ereignisses, auf das sich andere Controller registriert haben. Diese Controller-Verwendungen werden von Ihnen bei der Erstellung eines Controllers definiert.
Jeder Controller besitzt Programmbereiche, in denen Sie eigenen Quelltext einfügen können. So existiert ein Application Programming Interface (API), um Context-Knoten und ihre Attribute sowie die Daten zu bearbeiten. Auch die notwendige Initialisierung von Knoten kann über dieses API ausgeführt werden. Weitere APIs stehen zur Verfügung, z.B. das API der Server-Abstraktions-Schicht, um auf die Systemumgebung zuzugreifen, oder die APIs für die Nachrichtenbehandlung und die dynamische Programmierung.
Controller können eigenen Quelltext in folgenden Bereichen enthalten:
● Ereignisbehandler – sie werden ausgeführt, wenn eine View initialisiert, beendet oder betreten wird, wenn ein Oberflächenelement einer View eine Aktion auslöst oder wenn andere Controller ein registriertes Ereignis auslösen
● Methoden – diese können von anderen Controllern aufgerufen werden
● Supply-Funktionen – diese werden nach Bedarf ausgeführt, um Elemente im Context zu initialisieren