!--a11y-->
Controller-übergreifender Methodenaufruf 
Das Web-Dynypro-Framework erlaubt dem Anwendungsentwickler, Methodenaufrufe über die Grenzen eines Controllers hinweg zu programmieren. Um diese Funktionsweise zu erläutern soll das Beispiel des Kapitels Ereignisbehandler von Aktionen erneut betrachtet werden:
Im Kapitel Das
Context-Mapping wurde bereits ein View-übergreifender Context im
Component-Controller sowie ein nötiges Mapping für die Beipiel-Component
eingerichtet. Nun soll zusätzlich die Funktionalität des Ereignisbehandlers
der Aktion GO in eine Methode des
Component-Controllers verlagert werden.
In unserem Beispiel soll diese Methode SIMPLE_GET_FLIGHTS heißen:
method SIMPLE_GET_FLIGHTS. data: INPUT_NODE type ref to IF_WD_CONTEXT_NODE, TABLE_NODE type ref to IF_WD_CONTEXT_NODE, CAR type STRING, FLIGHTS type standard table of SPFLI.
INPUT_NODE = WD_CONTEXT->GET_CHILD_NODE( 'INPUT_NODE' ).
INPUT_NODE->GET_ATTRIBUTE( exporting Name = 'IN1' importing Value = CAR ). FLIGHTS = CL_WD_FLIGHT_MODEL=>GET_FLIGHTS_BY_CARRID( CAR ).
TABLE_NODE = WD_CONTEXT->GET_CHILD_NODE( 'TABLE_NODE' ).
TABLE_NODE->BIND_ELEMENTS( FLIGHTS ). endmethod.
|
Inhaltlich ändert sich an dieser Methode nichts, der Context in dem sie aufgerufen wird ist nun jedoch ein anderer. Dies bedeutet, dass beispielsweise das Attribut WD_CONTEXT als Referenz auf den lokalen Context jetzt nicht mehr den Context der View repräsentiert, sondern den Context des Component-Controllers.
Die soeben im Component-Controller eingerichtete Methode muss nun im Ereignisbehandler der Aktion GO im Controller der View aufgerufen werden:
method ONACTIONGO .
WD_COMP_CONTROLLER->SIMPLE_GET_FLIGHTS( ).
endmethod.
|
Das Attribut WD_COMP_CONTROLLER ist eine Referenzvariable vom Bezugstyp IG_COMPONENTCONTROLLER und damit eine Referenz auf den jeweiligen Component-Controller. Es ist jedem View-Controller der Component automatisch bekannt.