
Eventhandler für die Einstiegsseite festlegen 
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
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.

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
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.
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:
Eventhandler für die Einstiegsseite des zweiten Tutorials festlegen
Vorgehensweise
|
CLASS CL_HTMLB_MANAGER DEFINITION LOAD. * Optional: test that this is an event from HTMLB library. * See if upload is triggered from button 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. lname ?= CL_HTMLB_MANAGER=>GET_DATA( WHEN 'authorlist'. WHEN others. ENDCASE. ENDIF. |
Weiter geht es mit dem