Das Notes Forum
Domino 9 und frühere Versionen => ND8: Entwicklung - XPages => Thema gestartet von: JKo 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
-
Ein Validator wird nur ausgeführt, wenn ein Wert vorhanden ist. Kein Wert, keine Validierung.
-
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
-
Auf alle Fälle muss es val == '' statt val = '' heißen.
-
@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.
-
Hallo Sven,
super, danke für den Tipp. Jetzt funktioniert es.
Gruss Jörg