Home > Notes & XPages, Stumbling Stones > Stolperfalle: Validierung

Stolperfalle: Validierung

Heute bin ich auf ein faszinierendes Phänomen gestoßen.

Problem war folgendes:

In einer Anwendung hatten wir 2 Comboboxen. Beide wurden mit Werten aus einem Setup-Dokument befüllt. Zusätzlich fügten wir per Javascript (serverseitig) noch einen Leerstring und den Wert New… hinzu. Bei Auswahl von New… wurde ein Dialog aufgerufen.

1. Phänomen: Schloss man den Dialog so stand der Wert in der Combobox noch auf New… Wollte man nun speichern, so wurde die serverseitige Validierung angestoßen, dort tauchte die Meldung “Entry not found in Index” auf. Keiner wusste woher diese Meldung kam. Ein paar Printouts verrieten uns, dass beim ersten Speichern noch der alte Wert im Frontenddokument stand, also der Wert der vor der Auswahl von New… in der Combobox war. Konsequenz daraus, beim ersten Submit auf ein Feld wird bei fehlgeschlagener Validierung der Wert nicht ins Backend submittet, denn selbst ein getComponent(“feldname”).value brachte uns noch den alten Wert zurück. Beim zweiten Submit, wird der wert dann doch übertragen und erneut validiert. Dies kann zu merkwürdigen und schwer nachzu vollziehenden Fehlern führen.

2. Phänomen: Wo kam die Meldung “Entry not found in Index” her? Nach einigem hin und her probieren wurde klar woher er kam: Aus der Form.
Unglaublich aber war, die serverseitige Validierung schleift Fehlermeldungen von anderen Feldern aus der Form durch. Wir hatten in der Datasource des Dokuments definiert, dass beim Speichern der Datasource die Form computed werden soll. In der Form wiederum hatten wir ein Feld, welches aus der Referenz (der Wert der Combobox entsprach per Alias einer UNID) einen Klartextwert für die Volltextsuche machte. Dort wurde ein @DBLookup durchgeführt. Dieser nahm sich den Wert aus dem Feld (New…) und sucht entsprechend danach. Komischerweise gelangt der Wert nicht ins Backend, aber in den Einflussbereich dieser berechneten Formel. Da der Wert nicht da war wurde ein Fehler geworfen. Nämlich “Entry not found in Index”. Dieser wurde dann durchgeschliffen und auf der XPage angezeigt.

Daraus ergab sich die Möglichkeit in dem eigentlichen Feld, wo der Wert aus der Combobox gespeichert wird, in der InputValidation eine Formel zu hinterlegen welche unseren Feldwert validiert und entsprechend mit @Failure() eine Fehlermeldung zurückgibt. Auch diese wurde dann in der XPage angezeigt. So ergeben sich völlig neue Möglichkeiten die Validierung zu erweitern.

Advertisements
  1. 10/04/2014 at 9:40 am

    I constantly emailed this blog post page to all my friends,
    as if like to read it afterward my friends will too.

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: