Autor Thema: ValidateExpression funktioniert nicht  (Gelesen 5079 mal)

Offline JKo

  • Frischling
  • *
  • Beiträge: 8
ValidateExpression funktioniert nicht
« am: 29.04.13 - 16:55:53 »
Hallo zusammen,

ich habe auf einer XPage zwei Felder. Das erste ist eine Radiogroup, in der das Intervall ausgewählt wird. Wenn hier "monatlich" (Alias 12) ausgewählt wird, dann muss in dem zweiten Feld (id="inputText2) der Monatstag eingegeben werden, das Feld darf dann nicht leer sein. Dazu habe ich bei dem zweiten Feld den folgenden Validator:

    <xp:validateExpression message="Bitte geben Sie den Monatstag ein.">
      <xp:this.expression><![CDATA[#{javascript:
      var interval = getComponent("radioGroupIntervall").getValue();
_dump("interval " + interval);
var val =getComponent("inputText2").getSubmittedValue();
_dump("value " + val);
        if (sessionScope.Intervall == '12' && val == '')
        {
        _dump("validation false");
          return false;
        } else {
        _dump("validation TRUE");
          return true;
        }
      }]]></xp:this.expression>
    </xp:validateExpression>
    </xp:this.validators>

Wenn das zweite Feld nicht leer ist, werden meine Eingaben in das Dokument gespeichert und die _dump in der Server Konsole angezeigt. Wenn ich das zweite Feld leer mache, erscheint keiner der _dump und die Xpage für den Fehler Fall wird geöffnet.

Kann mir bitte jemand einen Tipp geben, wo das Problem liegt.

Gruß Jörg

Offline Sven Hasselbach

  • Senior Mitglied
  • ****
  • Beiträge: 316
  • Geschlecht: Männlich
    • blog@hasselba.ch
Re: ValidateExpression funktioniert nicht
« Antwort #1 am: 02.05.13 - 02:38:56 »
Ein Validator wird nur ausgeführt, wenn ein Wert vorhanden ist. Kein Wert, keine Validierung.

Offline JKo

  • Frischling
  • *
  • Beiträge: 8
Re: ValidateExpression funktioniert nicht
« Antwort #2 am: 06.05.13 - 16:46:56 »
Hallo Sven,

vielen Dank für den Hinweis. Ich habe den Validator jetzt in die RadioGroup verschoben. Aber leider funktioniert es nicht so wie ich mir das vorstelle.

<xp:this.expression><![CDATA[#{javascript:
      var interval = getComponent("radioGroupIntervall").getValue();
var val = getComponent("inputText2").getSubmittedValue();
        if (interval == '12' && (val==null || val = ''))
        {
          _dump("validation false");
          return false;
        } else {
          _dump("validation TRUE");
          return true;
        }
      }]]></xp:this.expression>


Wenn ich in den Monatstag nichts eintrage und auf den Speichern-Button klicke, kommt "validation false" in der Konsole und die View-Page (if update fails) wird angezeigt.

Ich hätte aber gerne, dass die aktuelle Seite weiter angezeigt wird und in dem zugeordneten Display Error Control meine Meldung angezeigt wird.

Was mache ich noch falsch?

Oder alternativ, gibt es ein Beispiel dafür? So eine Validierung ist doch gang und gäbe.

Gruß Jörg


Offline Jens Winkelmann

  • Junior Mitglied
  • **
  • Beiträge: 53
  • Geschlecht: Männlich
  • Jens Winkelmann
    • PAVONE AG
Re: ValidateExpression funktioniert nicht
« Antwort #3 am: 06.05.13 - 22:45:52 »
Auf alle Fälle muss es val == '' statt val = '' heißen.

Offline Sven Hasselbach

  • Senior Mitglied
  • ****
  • Beiträge: 316
  • Geschlecht: Männlich
    • blog@hasselba.ch
Re: ValidateExpression funktioniert nicht
« Antwort #4 am: 07.05.13 - 11:28:16 »
@JKo:
Du musst die Navigation-Rule auf der Seite entfernen (bzw. hinterfragen wozu die eigentlich da sind).
Solange die Regel aktiv ist, wird immer auf diese XPage umgeleitet, sobald ein Validierungsfehler auftritt.


Offline JKo

  • Frischling
  • *
  • Beiträge: 8
Re: ValidateExpression funktioniert nicht
« Antwort #5 am: 08.05.13 - 16:08:18 »
Hallo Sven,

super, danke für den Tipp. Jetzt funktioniert es.

Gruss Jörg

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz