Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung - XPages => Thema gestartet von: Matze84 am 14.03.13 - 15:06:39

Titel: XPages customValidator
Beitrag von: Matze84 am 14.03.13 - 15:06:39
Hallo zusammen,

ich sitze gerade an der Validierung für eine XPage und ich habe Probleme mit dem customValidator.

Code
<xp:customValidator>
		<xp:this.validate><![CDATA[#{javascript:var wert = getComponent("inputboxGruppeOE").getValue();

                       if (@IsNumber(wert) == 0)
                       {
	                    return "Fehlerhafte OE-Nr.";
                       }
                  }]]></xp:this.validate
</xp:customValidator>

Wenn der User einen Wert in die EditBox eingiebt, der kein Numerischer ist, dann bringt der Validator richtigerweise eine Fehlermeldung
in meiner Error Message auf der XPage.  Im Gegensatz zu den Standard-Validatoren (z.B. validateRequired) lässt sich die XPage trotzdem speichern.

Hat jemand eine  Ahnung woran das liegt, oder was ich da falsch mache?


Gruß

Matthias
Titel: Re: XPages customValidator
Beitrag von: Jan Grünklee am 14.03.13 - 16:04:52
Hallo Matthias,

Dein validate muss true oder false zurückgeben. Bei Dir gibt das einen String zurück. Deine Fehlernachricht kommt in message rein.

Code
<xp:inputText id="inputText1" value="#{viewScope.test}">
	<xp:this.validators>
		<xp:customValidator validate="#{javascript:return true oder false}" message="Hier kommt die Fehlermeldung rein"></xp:customValidator>
	</xp:this.validators>
</xp:inputText>

Gruss Jan
Titel: Re: XPages customValidator
Beitrag von: Matze84 am 14.03.13 - 20:25:03
Auch wenn ich ein "return false" zurückgebe, wird die XPage gespeichert.

Gibt es einen Parameter, den man setzen muss, damit das Speichern verhindert wird? Wenn man die EditBox als required Field markiert, dann wird das Speichern bei einem leeren Feld auch verhindert. Warum ist das bei einem customValidator anders?
Titel: Re: XPages customValidator
Beitrag von: Jan Grünklee am 15.03.13 - 07:57:54
Hallo Matthias,

wenn Du das Feld leer lässt, dann hat der Custom Validator auch nix zum validieren, d.h. willst Du sicher stellen, dass ein Feld gefüllt ist, dann markierst Du das Feld als required. Wenn Du noch weitere Validierungen haben möchtest, dann baust Du weitere Validators ein, wie z.B. Deinen Custom Validator.

Gruss Jan
Titel: Re: XPages customValidator
Beitrag von: Tode am 15.03.13 - 10:21:49
Bitte code... wahrscheinlich returnst Du einen falschen Datentyp...
Titel: Re: XPages customValidator
Beitrag von: Sven Hasselbach am 15.03.13 - 10:48:47
Zitat
Warum ist das bei einem customValidator anders?
Der required Validator ist ein besonderer Fall, denn hier hat die IBM einen Workaround eingebaut, der auch leere Feldwerte überprüfen lässt. Dieser ist in den jew. Komponenten hardcoded eingebaut. Es ist nicht möglich, einen eigenen Validator zu coden, der auf einen leeren Feldwert hin prüft - man kann jedoch einen Konverter hierfür missbrauchen.
Titel: Re: XPages customValidator
Beitrag von: Matze84 am 15.03.13 - 11:03:05
Ich habe das Ganze jetzt mit einem "validateExpression" versucht und da funktioniert es

Code
<xp:inputText id="inputboxGruppeOE"
					style="width:220px;height:24.0px;font-weight:bold;font-size:11pt"
					required="true" value="#{document1.GruppeOETX}"
					disableValidators="false" disableClientSideValidation="true">

					<xp:this.validators>
						<xp:validateRequired
							message="Bitte OE-Nr. angeben">
						</xp:validateRequired>
						<xp:validateLength minimum="3" maximum="3"
							message="Bitte OE-Nr. 3stellig angeben.">
						</xp:validateLength>

						<xp:validateExpression
							message="Fehlerhafte OE-Nr."
							expression="#{javascript:@TextToNumber(value)}">

						</xp:validateExpression>
					</xp:this.validators>
</xp:inputText>

Sobald der User einen Wert eingibt, der sich nicht in eine Zahl konvertieren lässt, wird eine Fehlermeldung ausgegeben und das Speichern verhindert.