dschroedter
I'm new here

Problem mit der Validierung von Eingaben in eigenen Eingabekomponenten

Jump to solution

Hallo zusammen,

wir haben eine eigene Eingabekomponente, bei der die eingegebenen Daten bei jeder Änderung validiert werden.

Dafür implementiert unser SwingGadget das Interface IntegrityValidating. Die Implementierung der

Methode valiadteIntegrity() sieht wie folgt aus:


public Set<? extends Problem> validateIntegrity() {
     ValidationResult validationResult = model.vailidate(true, true);

     if (validationResult != null && validationResult.containsErrors()) {
          DefaultProblem problem = new DefaultProblem(customBundle.getString("errorMessage"));
          problem.putContext("myname", model);
          return Collections.singleton(problem);

     } else {
          return Collections.emptySet();
     }
}

Wenn man in der Methode "validateIntegrity()" ein Object von Typ "Problem" erzeugt, versucht FirstSpirit zunächst mit dem

dabei angegebenen Message-Key den zugehörigen Fehlertext aus dem ResourceBundle des SiteArchitects zu lesen.

In früheren Versionen von FirstSpirit war das Verhalten so, dass der Key selbst als Fehlertext ausgegeben wurde, wenn dazu

kein Eintrag in dem ResourceBundle existierte. In den aktuellen Versionen von FS wird nun aber eine Exception geworfen,

die letztlich dazu führt, dass gar keine Fehlermeldung angezeigt wird.

Meine Frage ist nun ob es möglich ist, das ResourceBundle des SiteArchitects um eigene Einträge zu erweitern oder

zusätzlich ein eigenes ResourceBundle zu registrieren?

Beste Grüße

Dirk Schrödter

0 Kudos
1 Solution

Accepted Solutions

Hallo Dirk,

behelfsweise könntet ihr mit diesem Schlüssel hier arbeiten, bis eine korrigierte API bereitsteht:

fs-resource.fs.client.gui.rules.save_violations=Bitte korrigieren Sie Ihre Eingabe!

Ist natürlich nicht von Dauer, aber der Schlüssel existiert so bereits seit über 3 Jahren und sollte so schnell nicht abhanden kommen.

Beste Grüße

Stefan

View solution in original post

0 Kudos
7 Replies
StefanSchulz
I'm new here

Hallo,

abgesehen davon, dass DefaultProblem keine API ist Smiley Wink, würde auch die API-Nutzung nicht weiterhelfen.

Offensichtlich handelt es sich hier um eine ungünstig umgesetzte API für die Problembehandlung, die eine ordentliche Nutzung nicht ermöglicht. Die ResourceBundle zu erweitern ist leider auch nicht möglich.

Bitte kontaktieren Sie unseren Technical Support, ich würde die API in dieser Form als "Bug" einstufen. Hier muss Abhilfe geschaffen werden.

Eventuell könnte man vorübergehend (als Workaround) versuchen, einen passenden Key zu finden, mit der eine Fehlermeldung angezeigt werden kann. Wie sieht denn die angedachte Fehleranzeige aus?

Beste Grüße

Stefan

0 Kudos

Hallo Stefan,

vielen Dank für deine Antwort.

M.E. wäre es hilfreich, wenn es eine generische Fehlermeldung der Form "genericErrorMessage=${0}" im

FS ResourceBundle geben würde. Dann könnte man seine eigene sprachabhängige Fehlermeldung als Parameter

übergeben. Etwaige variable Bestandteile der Fehlermeldung müsste man dann jedoch selbst ersetzen.

Wenn das DefaultProblem keine API ist, wie ist den dann der offizielle Weg um einen Fehler in einer

Custom-Eingabekomponente zu erzeugen? Ist denn der Aspect "IntegrityValidating" auch keine API?

Beste Grüße

Dirk

0 Kudos

Hallo Dirk,

einen generischen Fehlercode könnte man einführen, aber vermutlich sollte man die API so auslegen, dass man einfach eine entsprechende Nachricht frei formulieren kann.

Wie sieht denn die Fehlermeldung aus, die ihr an dieser Stelle ausgeben möchtet?

IntegrityValidating ist API und beinhaltet das Interface Problem. Der API-Weg wäre entsprechend, dieses Interface selbst zu implementieren. Würde aber in der vorliegenden Form nicht helfen.

Beste Grüße

Stefan

0 Kudos

Hallo Stefan,

unserer Fehlermeldung lautet "Bitte korrigieren Sie die rot markierten Formularelemente".

Damit sind die in unserem Formulareditor angezeigten Fehler gemeint.

errors.png

Beste Grüße

Dirk

0 Kudos

Hallo Dirk,

behelfsweise könntet ihr mit diesem Schlüssel hier arbeiten, bis eine korrigierte API bereitsteht:

fs-resource.fs.client.gui.rules.save_violations=Bitte korrigieren Sie Ihre Eingabe!

Ist natürlich nicht von Dauer, aber der Schlüssel existiert so bereits seit über 3 Jahren und sollte so schnell nicht abhanden kommen.

Beste Grüße

Stefan

0 Kudos

Hallo Stefan,

vielen Dank für deine Hilfe. So machen wir es.

Beste Grüße

Dirk

0 Kudos

Hallo Stefan,

wir haben aktuell die gleiche Problematik wie Dirk. Gibt es heute die Möglichkeit eigene Messages anzuzeigen? Der generischen Eingabe "Bitte korrigieren sie Ihre Eingabe!" fehlt leider der Platzhalter für einen eigenen Text.

Grüße Alex

0 Kudos