Autor Thema: XPages customValidator  (Gelesen 6866 mal)

Matze84

  • Gast
XPages customValidator
« 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

Offline Jan Grünklee

  • Frischling
  • *
  • Beiträge: 43
  • Geschlecht: Männlich
Re: XPages customValidator
« Antwort #1 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
Notes ist das was Du draus machst!

Matze84

  • Gast
Re: XPages customValidator
« Antwort #2 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?

Offline Jan Grünklee

  • Frischling
  • *
  • Beiträge: 43
  • Geschlecht: Männlich
Re: XPages customValidator
« Antwort #3 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
Notes ist das was Du draus machst!

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: XPages customValidator
« Antwort #4 am: 15.03.13 - 10:21:49 »
Bitte code... wahrscheinlich returnst Du einen falschen Datentyp...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Sven Hasselbach

  • Senior Mitglied
  • ****
  • Beiträge: 316
  • Geschlecht: Männlich
    • blog@hasselba.ch
Re: XPages customValidator
« Antwort #5 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.

Matze84

  • Gast
Re: XPages customValidator
« Antwort #6 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.
« Letzte Änderung: 15.03.13 - 11:08:33 von Matze84 »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz