Anfang des Inhaltsbereichs

Vorgehensweisen Eventhandler für die Einstiegsseite festlegen Dokument im Navigationsbaum lokalisieren

Verwendung

Nachdem Sie im Layout die Events angegeben haben, die beim Drücken der Buttons ausgeführt werden und die dazugehörigen Seitenattribute definiert haben, spezifizieren Sie nun die Eventhandler.

In diesem Beispiel benötigen Sie lediglich den Eventhandler für die Eingabeverarbeitung OnInputProcessing.

Klickt der Benutzer eine Drucktaste an, wird das Ereignis CLICK ausgelöst. Sie können den entsprechenden onClick-Eventhandler verwenden, um eine vordefinierte Aufgabe auszuführen. Das Ereignis CLICK kann dynamisch mit dem Attribut disabled aktiviert bzw. deaktiviert werden. Wenn eine Drucktaste deaktiviert ist, reagiert sie nicht mehr auf Aktionen des Benutzers.

Eventhandling beim HTMLB-Element button

Ein BSP-Element kann viele Events haben. Das BSP-Element button hat nur zwei Eventhandler, nämlich onClick und onClientClick. Im vorliegenden Beispiel wird nur onClick verwendet.

Üblicherweise realisieren Sie Ihre User-Interface-Elemente über ein <form>-Element im Layout Ihrer BSP, das zurück auf die gleiche Seite weist, so auch hier. In diesem Standardfall erzeugen Sie das Coding für das Eventhandling im OnInputProcessing-Abschnitt. Innerhalb des OnInputProcessing-Eventhandlers können Events von der HTMLB-BSP-Extension über die Event-ID-Variable erkannt und ausgewertet werden. Für alle HTMLB-Events hat diese Variable den Wert von CL_HTMLB_MANAGER=>event_id. Normalerweise werden die Events entsprechend im Rahmen dieses Frameworks behandelt:

IF event_id = CL_HTMLB_MANAGER=>EVENT_ID.
… handle HTMLB event…
ENDIF.

Sie können das Handling von HTMLB-Events auf zweierlei Arten realisieren. Die erste Technik beinhaltet das Retrieval der Eventdaten und das anschließende Verarbeiten der Daten (üblicherweise in einem großen case-Statement). Die Alternative besteht darin, den Event gegen eine benutzerinstantiierte Eventklasse zu 'feuern'.

In diesem Fall wird der HTMLB-Manager gerufen, um eine Referenz auf ein generisches Event-Objekt vom Typ CL_HTMLB_EVENT zu erhalten. Auf diesem Event-Objekt können Sie die Attribute name und event_type verwenden, um zu ermitteln, welche Art von Event zur Verfügung steht. Wenn das Element das Attribut id unterstützt, können Sie das Attribut id verwenden, um herauszufinden, welches Element den Event gefeuert hat. Um detaillierte Event-Daten zu erhalten, bilden Sie das Event-Objekt auf ein Event-Objekt mit dem passenden Typ ab, im vorliegenden Fall ist es ein button-Event. Weitere Informationen über den button-Event erhalten Sie in der Klasse CL_HTMLB_EVENT_BUTTON.

DATA: event TYPE REF TO CL_HTMLB_EVENT.
event = CL_HTMLB_MANAGER=>get_event( runtime->server->request ).
IF event->name = 'button' AND event->event_type = 'click'.
DATA: button_event TYPE REF TO CL_HTMLB_EVENT_BUTTON.
button_event ?= event.
ENDIF.

Hinweis

Beachten Sie, dass für das BSP-Element button und die onClick-Events die dazugehörige Eventklasse CL_HTMLB_EVENT_BUTTON ist.

Für das Eventhandling steht das Interface IF_HTMLB_EVENT zur Verfügung. Dieses Interface beinhaltet Methoden für alle in der BSP-Extension HTMLB verwendeten BSP-Elemente, die Events verwenden.

Der Event kann an eine benutzerinstantiierte Eventhandlerklasse gefeuert werden. Im vorliegenden Fall kann die Eventhandlingklasse jede beliebige benutzerdefinierten Klasse sein, die lediglich das Interface IF_HTMLB_EVENT implementieren muss und bereits instantiiert sein muss. Normalerweise können Sie für das Handling der spezifischen Events zum Beispiel die Anwendungsklasse verwenden. Einzige Voraussetzung hierbei wäre, dass die Anwendungsklasse das Interface IF_HTMLB_EVENT implementiert.

Im folgenden Beispiel wird eine separate Klasse namens CL_HTMLB_EVENT_EXAMPLE für das Eventhandling verwendet:

DATA: event_handler TYPE REF TO CL_HTMLB_EVENT_EXAMPLE.
CREATE OBJECT event_handler.
CL_HTMLB_MANAGER=>dispatch_event(
request = runtime->server->request
event_handler = event_handler
page_context = page_context
).

Das BUTTON-Element feuert den Event IF_HTMLB_EVENT~BUTTON_CLICK, der außerdem den zusätzlichen Parameter id beinhaltet.

Für alle gefeuerten Events gibt es das onClick-Attribut. Dies ist der vom Benutzer vergebene Name für die Eventhandlermethode.

Achtung

Alle BUTTON-Click-Events aller Buttons auf der Seite werden durch diese eine Methode gefeuert. Beachten Sie als Entwickler, dass Sie die korrekte ID wählen, um zu entscheiden, welcher Button getriggert wurde.

Siehe auch:

StrukturlinkEventhandler für die Einstiegsseite des zweiten Tutorials festlegen

Vorgehensweise

  1. Wählen Sie für die Einstiegsseite die Registerkarte Eventhandler.
  2. Wählen Sie im Pulldown-Menü den Eintrag OnInputProcessing aus.
  3. Spezifizieren Sie den Verarbeitungsablauf, der aufgrund der Benutzeraktion ausgeführt werden soll:
  4. CLASS CL_HTMLB_MANAGER DEFINITION LOAD.

    * Optional: test that this is an event from HTMLB library.
    IF event_id = CL_HTMLB_MANAGER=>EVENT_ID.

    * See if upload is triggered from button
      DATA: event TYPE REF TO CL_HTMLB_EVENT.
      event = CL_HTMLB_MANAGER=>get_event( runtime->server->request ).
      IF event->name = 'button' AND event->event_type = 'click'.
        DATA: button_event TYPE REF TO CL_HTMLB_EVENT_BUTTON.
        button_event ?= event.
      ENDIF.

      CASE event->id.

        WHEN 'search'.

          DATA: lname TYPE REF TO CL_HTMLB_INPUTFIELD.
          DATA: fname TYPE REF TO CL_HTMLB_INPUTFIELD.

          lname ?= CL_HTMLB_MANAGER=>GET_DATA(
                              request = runtime->server->request
                              name    = 'inputField'
                              id      = 'authorlname'
                                            ).
          IF lname IS NOT INITIAL.
            authorlname = lname->value.
          ENDIF.
          fname ?= CL_HTMLB_MANAGER=>GET_DATA(
                              request = runtime->server->request
                              name    = 'inputField'
                              id      = 'authorfname'
                                            ).
          IF fname IS NOT INITIAL.
            authorfname = fname->value.
          ENDIF.
          navigation->set_parameter( 'authorlname' ).
          navigation->set_parameter( 'authorfname' ).
          navigation->next_page( 'TORESULTS' ).

        WHEN 'authorlist'.
          navigation->next_page( 'TOAUTHORS' ).

        WHEN others.

      ENDCASE.

    ENDIF.

  5. Sichern Sie Ihre Eingaben.

Diese Grafik wird im zugehörigen Text erklärtWeiter geht es mit dem Layout für die Autorenliste.

Ende des Inhaltsbereichs