Controller
Die Lebensdauer von Komponenten bzw. deren Controller wird wie gewohnt über die Registerkarte Eigenschaften des Controllers festgelegt. Unter Zustand können Sie die Lebensdauer als eine der drei folgenden Möglichkeiten angeben:
Üblicherweise ist die Einstellung hier bis zum Seitenwechsel.
Standardmäßig ist die Lebensdauer von Controller-Instanzen auf den einen Aufruf beschränkt. Wenn jedoch die Controller-Instanz mit
id übergeben wird, dann ist die Lebensdauer so, wie sie bei den Eigenschaften des Controllers angegeben ist (Registerkarte Eigenschaften). Die id kann wie folgt angegeben werden:Die
controller_id bzw. die comp_id des <bsp:call>-Elements darf keinen Unterstrich (‘_ ‘) enthalten.Die Lebensdauer des obersten Controllers geht vom ersten
CREATE_CONTROLLER für einen Sub-Controller bis zu DELETE_CONTROLLER des Sub-Controllers.Wenn Sub-Controller zeitweise verdeckt werden sollen, damit sie für eine Zeitlang nicht beim Eventhandling mitmachen, dann verwenden Sie die Methode
CONTROLLER_SET_ACTIVE. Ein so auf inaktiv gesetzter Controller wird nicht bei der Eingabeverarbeitung aufgerufen.Dieser verdeckte Controller ist nur versteckt, die Controller-Instanz wird nicht gelöscht.
Views
Dieser Abschnitt über die Lebensdauer von Views bezieht sich auf die Verwendung von MVC in SAP Web AS 6.20 bis einschließlich Support Package 9.
Anders als Controller oder Seiten haben Views nur eine sehr kurze Lebensdauer. Ihr Lebenszyklus sieht folgendermaßen aus:
Also existieren Views lediglich für die Dauer des Aufrufs, d.h. sie werden nach dem Aufruf zerstört.
Als Entwickler von BSP-Anwendungen mit MVC müssen Sie also den View explizit jedes Mal neu anlegen, da Sie ihn nicht in einem Controller wiederverwenden können. Im Folgenden sehen Sie ein Beispiel für falsches und für richtiges Koding:
Schreiben Sie: |
Schreiben Sie nicht: |
DATA: view TYPE REF TO if_bsp_page. view = create_view( view_name = 'main.htm' ). |
DATA: view TYPE REF TO if_bsp_page. IF view IS NOT BOUND. " or IS NOT INITIAL. view = create_view( view_name = 'main.htm' ). ENDIF. |
In jedem Fall muss der View explizit neu angelegt werden, bevor er verwendet werden soll.
DATA: view TYPE REF TO if_bsp_page.
view = create_view( view_name = 'main.htm' ).
" ... set attributes ....
call_view( page ).
CLEAR view.