#field
Dieses Objekt ist nur innerhalb von Parameter-Angaben von FS_BUTTON-Definitionen in Formularen verfügbar. |
Das Systemobjekt #field kann im Zusammenhang mit Instanzen der Eingabekomponente FS_BUTTON verwendet werden, um Inhalte von und Informationen über diese Eingabekomponenten im Formular zu erfragen und z.B. in Skripten zu verarbeiten.
#field wird hierbei im <PARAMS/>-Block einer FS_BUTTON-Definition im Formular-XML verwendet.
Über dieses Systemobjekt wird eine einzelne Eingabekomponente anhand ihres Variablennamens (name-Attribut in der Formular-XML-Definition der Komponente) abgerufen:
#field.st_headline
Dieser Aufruf liefert die Eingabekomponente „st_headline“ als Objekt vom Typ FormField zurück; über die Methoden des Objekts können dann Eigenschaften und Inhalte der Eingabekomponente des aktuellen Elements ausgelesen werden.
Beispiel
In diesem Beispiel wird das Systemobjekt #field verwendet, um die Eingabekomponente „st_headline“ dem Skript „clickhandlerscript“ zu übergeben und innerhalb dieses Skriptes einige Eigenschaften der Komponente zu verwenden.
<!-- Template form definition -->
<CMS_MODULE>
<!-- Define a text box with name "st_headline" -->
<CMS_INPUT_TEXT name="st_headline" >
<LANGINFOS>
<LANGINFO lang="*" label="Headline" />
</LANGINFOS>
</CMS_INPUT_TEXT>
<FS_BUTTON name="st_button" onClick="script:clickhandlerscript">
<LANGINFOS>
<LANGINFO lang="*" label="Button" />
</LANGINFOS>
<PARAMS>
<!-- Pass the component named "st_headline" as a parameter -->
<PARAM name="form_headline">#field.st_headline</PARAM>
</PARAMS>
</FS_BUTTON>
</CMS_MODULE>
Im Formularbereich der Vorlage wird die Eingabekomponente „st_headline“ vom Typ CMS_INPUT_TEXT und die Eingabekomponente „st_button“ vom Typ FS_BUTTON definiert. Innerhalb des <PARAMS/>-Blocks der FS_BUTTON-Definition wird die Eingabekomponente „st_headline“ durch Verwendung des #field-Objekts als Parameter namens „form_headline“ weitergegeben.
Wird das Skript der FS_BUTTON-Komponente ausgeführt, so wird die Eingabekomponente „st_headline“ dem Skript als Variable „form_headline“ übergeben, und aktuelle Attribute und Inhalte der Eingabekomponente können im Skript weiterverarbeitet werden:
// Script clickhandlerscript
operationAgent = context.requireSpecialist(de.espirit.firstspirit.agency.OperationAgent.TYPE);
requestOperation = operationAgent.getOperation(de.espirit.firstspirit.ui.operations.RequestOperation.TYPE);
if (form_headline != null) {
requestOperation.perform(
"Information about component: " + form_headline.getName() +
", current value: " + form_headline.get() +
", is this a default? " + form_headline.isDefault()
);
}
Wird durch die Verwendung des Systemobjekts #field eine Eingabekomponente an ein Skript oder eine Java-Klasse weitergegeben, so wird diese anhand des Parameter-Namens (name-Attribut des <PARAM/>-Tags) zur Verfügung gestellt - im Falle von Skripten direkt als Variable, im Falle von Executable-Klassen über das Map<String, String>-Objekt, das den execute()-Methoden übergeben wird.
Jedes Eingabekomponenten-Objekt ist vom Typ de.espirit.firstspirit.forms.FormField<T> und erhält die Methoden dieses Interfaces.