Show TOC

Controller-übergreifender MethodenaufrufLocate this document in the navigation structure

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.

Die entsprechende Methode des Component-Controllers

In unserem Beispiel soll diese MethodeSIMPLE_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.

Aufruf der Methode des Component-Controllers im Ereignisbehandler des View-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.