Fallback-Wert / Binding
Ein Binding ist die Verbindung von Datenquelle und Konsument. Die Datenquelle wird in der Binding-Notation angegeben (s. Syntax von Binding-Strings). Bindings können an verschiedenen Stellen in Intrexx definiert werden. Sie werden davon abhängig auch an verschiedenen Stellen im XML eingetragen. Bindings können wie folgt eingesetzt werden:
Binding als Vorgabe definieren (z.B. bei Eingabefeldern)
Bei Eingabefeldern kann im Eigenschaftendialog auf dem Reiter "Binding" ein Datenfeld-Binding bei neuen Datensätzen als Vorgabe definiert werden.
Legen Sie hier den gewünschten Kontrolltyp und den Anzeigewert fest.
Vorgabe bei neuen Datensätzen / Bei bestehenden Datensätzen
Vorgabewerte werden verwendet, wenn das Binding bei neuen oder bestehenden Datensätzen keinen Wert liefert. Klicken Sie auf "Vorgabewert bearbeiten", um einen neuen Vorgabewert zu definieren.
Wählen Sie hier das gewünschte Binding aus und klicken Sie "OK".
"Vorgabewert übernehmen" übernimmt den jeweils definierten Vorgabewert.
Hier das entsprechende XML, das Sie mit aktivierten Expertenoptionen über das markierte Eingabefeld mit der Taste F4 erreichen:
<textcontrol guid="5758A9C9EC60A724AC85B3CAE8F2EA28B23EFE45" name="textcontrol30057DD4" inputlength="255" label="false" readonly="false" rect="100,45,250,20" required="false" source="container['7338AC8FD8B5B5C39DBB2AD2F456529DD84A233A'].dataField['D6F55F095F2E5A5570EAB98A8773B0E2F193FBA1']">
<property>
<title de="Titel" en="Title"/>
</property>
<defaultvalue record="new" source="container['7338AC8FD8B5B5C39DBB2AD2F456529DD84A233A'].dataField['8860BBDFB02E3E9E43940D63A4A64A0AACAEF2DC']" sourceType="binding"/>
</textcontrol>
Datenfeld
Container
Wählen Sie hier den gewünschten Container aus, in dem das Datenfeld enthalten ist, dessen Wert als Fallback-Wert verwendet werden soll.
Datenfeld
Wählen Sie hier das gewünschte Datenfeld aus.
Datenfeld einer Elterndatengruppe auswählen
Öffnet einen Dialog, in dem ein Datenfeld ggf. aus einer übergeordneten Datengruppe ausgewählt werden kann.
Session / Request / Verarbeitungskontext
Tragen Sie hier jeweils den Namen des Requestparameters, der Sessionvariable bzw. der Variable aus dem Verabeitungskontext ein.
Statischer Wert
Tragen Sie hier einen statischen Wert ein. Dabei kann eine beliebige Zeichenfolge verwendet werden, solange sie zum verlangten Datentyp passt. Wenn z.B. ein Integerwert verlangt wird, kann "123" übergeben werden, nicht aber "ABC".
Bei Kontrollkästchen kann hier als statischer Wert die Einstellung "Ausgewählt" aktiviert bzw. deaktiviert werden, je nachdem, ob das Kontrollkästchen beim Laden der Seite im Browser bereits ausgewählt sein soll oder nicht.
Beim Element "Mehrfachauswahl 2.0" ist es auch möglich, hier mehrere - dann mit einer Doppelpipe getrennte - statische Werte vorzugeben.
Velocity
Hier kann Velocity-Skript eingetragen werden, das den Fallback-Wert liefert. Velocity kann bei Seiten-Parametern nur rudimentär eingesetzt werden. Objekte wie $DC, $drRecord stehen an dieser Stelle nicht zur Verfügung, if/else-Konstrukte können verwendet werden.
Neue GUID
Mit dieser Option wird automatische eine GUID erzeugt, die als Fallback-Wert verwendet wird.
Sprache
Bei der Sprache kann zwischen "Standardsprache des Portals" und "Kontextabhängige Sprache" gewählt werden. Die kontextabhängige Sprache ergibt sich über die Kette
- rq_lang/cookie_lang
- Standardsprache des eingeloggten Benutzers
- Standardsprache des Portals
Aktueller Benutzer
Hier kann ein Datenfeld aus dem Modul "Benutzer" ausgewählt werden.
Systemdatengruppe
Applikation
Wählen Sie hier die Applikation aus, die die gewünschte Systemdatengruppe enthält.
Datenfeld
Wählen Sie hier das Datenfeld aus.
Parameter
Wählen Sie hier den gewünschten Parameter aus, dessen Fallbackwerte verwendet werden sollen. Zur Auswahl stehen alle Parameter der aktuellen Seite.
Parameter (Application API)
Im API-Umfeld können API-Parameter für den Vergleich ausgewählt werden. Eine Anleitung dazu finden Sie hier.
Datum & Zeit
Ist ein Datenfeld mit Kontrolltyp "Datum & Zeit", "Datum" oder "Zeit" als Anzeigewert ausgewählt, so kann hier das Datum angepasst werden. Alle Informationen zu den Einstellungen finden Sie hier.
Automatische Erhöhung
Ist ein Datenfeld mit Kontrolltyp "Ganzzahl" ausgewählt, so kann mit dieser Option ein Zähler eingerichtet werden. Bei der Anlage eines neuen Datensatzes wird dann der zuletzt erfasste Wert automatisch um 1 erhöht. Dieser neue Wert wird als Vorgabe verwendet.
Baum
Diese Option steht nur für Sprünge im Element "Baum Ansicht" zur Verfügung.
Wert des aktuellen Baumknotens
Als Wert können der Primärschlüssel, die Knoten-ID, Eltern-Knoten-ID oder der Titel für den aktuellen Baumknoten ausgewählt werden. Der Wert "Knoten-ID" ist ein kommaseparierter Wert, zusammengesetzt aus dem Schlüssel, dem übergeordneten Schlüssel und der Sortierung. Der Wert "Eltern-Knoten-ID" entspricht dem übergeordneten Schlüssel. Der Wert "Titel" ist der Titel des aktuellen Knotens.
Termin
Diese Option ist nur bei Kalender-Plugins wählbar. Hier sind alle Daten wählbar, die in den Plugin-Eigenschaften auf dem Reiter "Allgemein" definiert sind.
Ressource
Diese Option ist nur bei Kalender-Plugins wählbar, wenn auf dem Reiter "Optionen" die Einstellung "Ressourcendarstellung ermöglichen" gesetzt ist. Zur Auswahl stehen die Datenfelder, die auf dem Reiter "Optionen" als Titelfeld, Sortierfeld, Gruppierungsfeld oder Bild ausgewählt sind.
Ressource
Wählen Sie hier das gewünschte Ressourcen-Datenfeld aus.
Aktuelle Datengruppe
Diese Option ist nur wählbar, wenn kein ReadContainer unterstützt wird, wie z.B. in Prozessen.
Datenfeld
Wählen Sie hier das gewünschte Datenfeld aus.
Weitere
Unter der Option "Weitere" finden sie eine Auswahlliste für Bindingtypen, denen Sie Werte zuweisen können.
Daten pro Benutzer mit "appUserProfile" persistent speichern
Alle weiteren Informationen dazu finden Sie hier.
Bindings
Syntax von Binding-Strings
bindingType
bindingType['guid|name']
bindingType["guid|name"]
bindingType.guid
bindingType.name
bindingType['guid|name'].guid
bindingType["guid|name"].name
bindingType['guid|name'].subtype['guid|name']
bindingType["guid|name"].subtype["guid|name"]
bindingType["guid|name"].subtype["guid|name"].name
...
Nicht alle Bindings sind in jedem Kontext verfügbar.
compatibility.primaryKey compatibility.primaryKey['name'] compatibility.foreignKey compatibility.foreignKey['name'] compatibility.primaryOrForeignKey compatibility.primaryOrForeignKey['name']
container
Liefert den Wert eines Read- oder WriteContainers. Dieses Binding kann mit der Option "Datenfeld" definiert werden. Es kann auch als Wert für die Option "Weitere" mit der folgenden Syntax eingetragen werden:
container['GUID|NAME'].dataField['GUID|NAME']
container['GUID|NAME'].member['GUID|NAME']
container['GUID|NAME'].recordOwner (The value of record owner field)
container['GUID|NAME'].userId (The value of userid field)
container['GUID|NAME'].key (The value of the single primary key)
container['GUID|NAME'].primaryKey (The value of the single primary key)
container['GUID|NAME'].key['GUID|NAME'] (The value of the primary key with the GUID or name)
container['GUID|NAME'].primaryKey['GUID|NAME'] (The value of the primary key with the GUID or name)
container['GUID|NAME'].foreignKey['GUID|NAME'] (The value of the foreign key with the GUID or name)
container['GUID|NAME'].foreignKey (The value of the single foreign key)
container['GUID|NAME'].combinedKey (The value of the single primary key or a formated Key string like "LID= 1, LANG= de")
container['GUID|NAME'].combinedPrimaryKey (The value of the single primary key or a formated Key string like "LID= 1, LANG= de")
container['GUID|NAME'].combinedForeignKey (The value of the single foreign key or a formated Key string like "LID= 1, LANG= de")
control
Liefert den Wert einer Kontrolle. Dieses Binding kann als Wert der Option "Weitere" mit der folgenden Syntax eingetragen werden:
control['GUID']
control['NAME']
control.guid['CONTROLGUID']
control.name['CONTROLNAME']
control.sysIdent['SYSIDENT']
currentDate
Liefert das aktuelle Datum ohne Uhrzeit.
currentDate currentDate['Y,M,D'] currentDate[+1,2,-3] Adjust current date: Year +1, month = 2, day -3 Y=(|[+-]?\d+) M=(|[+-]?\d+) D=(|[+-]?\d+)
Rules definition: See p_adjust in de.uplanet.util.CalendarUtil.modifyCalendar(T, String p_adjust, boolean)
currentDatetime
Liefert das aktuelle Datum mit Uhrzeit.
currentDatetime
currentDatetime.%TIMEZONE%
currentDatetime['Y,M,D,H,m,S']
currentDatetime[+1,2,-3,2, +2, 0] Adjust current date: Year +1, month = 2, day -3, hour=3,min+2,sec=0
Y=(|[+-]?\d+)
M=(|[+-]?\d+)
D=(|[+-]?\d+)
H=(|[+-]?\d+)
m=(|[+-]?\d+)
S=(|[+-]?\d+)
currentDatetime['Y,M,D,H,m,S'].%TIMEZONE%
Rules definition: See p_adjust in de.uplanet.util.CalendarUtil.modifyCalendar(T, String p_adjust, boolean)
%TIMEZONE% muss dabei eine gültige Zeitzonen-ID (wie z.B. UTC) sein.
currentTime
Liefert die aktuelle Uhrzeit.
currentTime currentTime['H,m,S'] currentTime[+1,2,-3] Adjust current date: Hour +1, minute = 2, second -3 H=(|[+-]?\d+) m=(|[+-]?\d+) S=(|[+-]?\d+)
Rules definition: See p_adjust in de.uplanet.util.CalendarUtil.modifyCalendar(T, String p_adjust, boolean)
currentUser
Liefert den aktuellen Benutzer.
currentUser[FIELDGUID|NAME]
Ersetzen Sie "NAME" mit dem Bean name.
recId
Liefert einen Wert von "alten" rq_RecId oder qs_RecId-Argumenten mit dem Format: "LID= 1; LANG= de". Dieses Binding wird aus Kompatibilitätsgründen verwendet und sollte nicht selbst geschrieben werden.
recId['LID'](gets the LID value out of the rec id string )
recId['LANG'](gets the LANG value out of the rec id string )
request
Dieses Binding kann mit der Option "Request" definiert werden. Es kann auch als Wert für die Option "Weitere" mit der folgenden Syntax eingetragen werden:
request['name']
sharedState
Dieses Binding kann mit der Option "Verarbeitungskontext" definiert werden. Es kann auch als Wert für die Option "Weitere" mit der folgenden Syntax eingetragen werden:
sharedState['name']
session
Dieses Binding kann mit der Option "Session" definiert werden. Es kann auch als Wert für die Option "Weitere" mit der folgenden Syntax eingetragen werden:
session['variable name']
staticText
Liefert statischen Text.
staticText['TEXT'] => TEXT will be returned
systemDataGroup
Liefert den Wert eines Datenfeldes aus einer Systemdatengruppe aus der aktuellen oder einer bestimmten Applikation.
systemDataGroup['APP_GUID'].dataField['FIELD_GUID']
target.argument, parameter
Liefert einen Parameterwert. target.argument[''] kann mit der Option "Parameter" definiert werden. Wird ein Binding selbst mit der Option "Weitere" erstellt, wird in der Regel eher "parameter['']" verwendet, da diese Schreibweise intuitiver ist und das Schlüsselwort "parameter" auch im Velocity- und Groovyumfeld verwendet wird.
parameter['NAME']
target.argument['NAME']
uniqueId
Erzeugt eine Zufallszahl.
uniqueId
uniqueGuid
Erzeugt eine GUID.
uniqueGuid
velocity
Liefert den Velocity-Text des Bindings. Es wird dabei versucht, den Text zu interpretieren. Dieses Binding kann als Wert der Option "Velocity" mit der folgenden Syntax eingetragen werden:
velocity['TEXT'] => The interpreted velocity TEXT will be returned
defaultLanguage
Liefert die Portal-Standardsprache (entspricht $defaultLanguagein Velocity).
contextLanguage
Liefert die aktuelle Portalsprache (entspricht "$lang" in Velocity)
appUserProfile
appUserProfile['key']
Liefert einen Wert aus dem UserProfile. Weitere Informationen dazu finden Sie hier.
Wert auflösen
Zeitpunkt zum Auflösen des Wertes
Falls möglich, kann hier der Zeitpunkt zum Auflösen des Wertes beim Laden der aktuellen Seite oder beim Laden der Zielseite konfiguriert werden.
Bindingtyp "appUserProfile"
Mit diesem Bindingtyp können Daten pro Benutzer gespeichert werden.Sie können Informationen für den jeweils aktuellen Benutzer in einem beliebigen Wert speichern und jederzeit abrufen, z. B. als Vorgabewert in Eingabefeldern.
"AppUserProfile" kann ähnlich verwendet werden wie eine Systemdatengruppe - eben nur benutzerabhängig. Man kann auf diese Art z.B. benutzerabhängig Ansichten steuern. Prinzipiell funktioniert die Verwendung wie ein SharedState bzw. eine Sessionvariable, nur dass die Daten persistent zur Verfügung stehen.
Abgrenzung
Mit dem Bindingtyp „appUserProfile“ erweitern sich die Möglichkeiten, beliebige Informationen individuell zu einem Benutzer zu speichern und zu verarbeiten.
Methode | Benutzerabhängig | Verfügbarkeit |
SharedState / Verarbeitungskontext | Nein | Wert steht zur Verfügung, bis ein neuer Wert gesetzt wird. |
Sessionvariable | Ja | Wert steht innerhalb einer Session zur Verfügung. |
Requestwert / Parameter | Nein | Wert steht für eine Aktion zur Verfügung. |
Systemdatengruppe | Nein | Wert steht innerhalb einer Applikation dauerhaft zur Verfügung. |
appUserProfile | Ja | Wert steht zur Verfügung, bis der Benutzer einen neuen Wert setzt. |
Umsetzung „No code"
Wird der Wert auf Eingabeseiten definiert und gespeichert, kann das Binding ohne Programmierung verwendet werden.
Definiert werden kann das Binding auf Eingabeseiten beim Erstellen eines WriteContainers. Dort steht die benutzerdefinierte Klasse "AppUserProfile" zur Verfügung.
Die Kontrolle, die den Werte definiert, wird in diesen WriteContainer aufgenommen. In den Eigenschaften des Bindings wird das Ziel definiert.
Anschließend kann der Wert im Default einer Kontrolle hinterlegt werden. Dazu kann unter „Weitere“ der Bindingtyp „appUserProfile“ gewählt und der definierte Wert hinterlegt werden.
Umsetzung „Low Code"
Steht zur Definition kein Writecontainer zur Verfügung, in dem der Bindingtyp „appUserProfile“ definiert werden kann, kann dieser auch per Velocity und Groovy gesetzt werden. Alle Informationen zur Verwendung in Groovy- oder Velocity-Skript finden Sie hier:
Weitere Informationen
Parameter - eine Übersicht
Parameter, Fallback- und semantische Werte erstellen