2016-05-21 5 views
0

Ich habe ein Textfeld, das nur Zeichen akzeptieren sollte: -wurde erste Regex in Constraint gesetzt wurde und einige reservierte Schlüsselwörter wie A, R, F, U nicht akzeptieren sollte Da zwei verschiedene Einschränkungen gesetzt sind, möchte ich, dass der Benutzer die spezifische Nachricht sieht, zuerst sollte es Illegal Value sein, dh default zkoss error, und wenn er ein reserviertes Zeichen eingibt, sollte es zeigen, dass reservierter Code gesetzt wurde. Aber irgendwie der folgende Code nicht funktioniert:Wie setze ich Multiple Regex-Kostenstellen auf Textbox in ZKOSS

field_code.setConstraint("/[a-zA-Z]/ : {Illegal Value} ,/[^AaRrUuFf]/ : Reserved Code"); 

Die Ausgabe ist die erste Regex funktioniert gut, aber auf die gleiche " {Illegal Value} ,/[^AaRrUuFf]/ : Reserved Code" beleidigen als Fehler angezeigt.

Antwort

0

Sie können es nicht in der Zul, aber mit Hilfe einer SimpleConstraint können Sie dies erstellen.

Erstellen Sie Ihre eigene Klasse und erweitern Sie SimpleConstraint.
Halten Sie dann 2 Matcher Vars für jede Einschränkung.
Schließlich überschreiben Sie die Validate-Methode zu etwas wie diesem:

@Override 
public void validate(Component comp, Object value) { 
    if (value != null && value instanceof String) { 
     String stringValue = (String) value; 
     if (!expression1.reset(stringValue).matches()) { 
       throw new WrongValueException(comp, errorMsg1); 
     } 
     if (!expression2.reset(stringValue).matches()) { 
       throw new WrongValueException(comp,errorMsg2); 
     } 
    } else { 
     // do what needs to be done when value is null or not a String. 
    } 

} 
Verwandte Themen