
Schritt 1 a) Implementierung von <sf:SimpleFormItem> 
Da das
<sf:SimpleFormItem> eine HTML-<table>-Verschalung benötigt, erstellen Sie zuerst das <sf:SimpleForm>-Element, um das korrekte HTML in den Output-Stream zu rendern.Innerhalb der Klasse
CL_BSP_TUTCMPLX_SIMPLE_FORM überschreiben und implementieren Sie die folgenden beiden Methoden:|
method IF_BSP_ELEMENT~DO_AT_BEGINNING . DATA: out TYPE REF TO IF_BSP_WRITER. endmethod.
method IF_BSP_ELEMENT~DO_AT_END . DATA: out TYPE REF TO IF_BSP_WRITER. endmethod. |
Für das eigentliche Element
<sf:SimpleFormItem> sieht der Rendering-Code folgendermaßen aus:|
<tr><td> <htmlb:Label/> </td><td> <htmlb:inputField/> </td></tr> |
Für die Implementierung wird das HTML-Coding auf die übliche Art über den aktuellen Output-Writer geholt und in den Datenstrom geschrieben.
Die Verarbeigung der
<htmlb:*>-Elemente ist ein wenig schwieriger. Da beide Elemente leer sind (d.h. sie haben keinen Body), können sie in einem Schritt verarbeitet werden. Für jedes Element sind die Verarbeitungsschritte wie folgt:Das komplette Coding sieht dann folgendermaßen aus:
|
method IF_BSP_ELEMENT~DO_AT_BEGINNING . DATA: out TYPE REF TO IF_BSP_WRITER. * <tr><td> * <htmlb:Label/> CREATE OBJECT label. CONCATENATE me->id '_label' INTO label->id. m_page_context->ELEMENT_PROCESS( element = label ). * </td><td> * <htmlb:inputField/> DATA: inputField TYPE REF TO CL_HTMLB_INPUTFIELD. inputField->id = me->id. m_page_context->ELEMENT_PROCESS( element = inputField ). * </td></tr> rc = CO_ELEMENT_DONE. endmethod. |

Beachten Sie, dass keine Änderungen in den eigentlicen Output-Writer-Strukturen vorgenommen wurden. Das Coding wird, genauso wie die verarbeiteten inneren Elemente, auf dem aktuellen Output-Writer ausgeführt. Dies wird automatisch über die Entwicklungsumgebung gesteuert (indirekt über den
PROCESS_ELEMENT-Aufruf).Sie können nun die Seite after.htm testen.
Nun wird die folgende Ausgabe erscheinen:

Fahren Sie fort mit Schritt 1 b) Verwendung von <htmlb:SimpleFormItem>