Hallo zusammen,
ich sitze gerade an der Validierung für eine XPage und ich habe Probleme mit dem customValidator.
<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
Hallo Matthias,
Dein validate muss true oder false zurückgeben. Bei Dir gibt das einen String zurück. Deine Fehlernachricht kommt in message rein.
<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
Ich habe das Ganze jetzt mit einem "validateExpression" versucht und da funktioniert es
<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.