2016-05-21 4 views
0

У меня есть текстовое поле, которое должно принимать только символы: для этого первого регулярного выражения установлено ограничение, и оно не должно принимать некоторые зарезервированные ключевые слова, которые являются A, R, F, U . Поскольку установлены два разных ограничения, я хочу, чтобы пользователь увидел конкретное сообщение, для которого сначала должно быть значение Illegal Value, т.е. ошибка zkoss по умолчанию, и когда он/она входит в зарезервированный символ, он должен показать, что зарезервирован код. Но как-то следующий код не работает:Как установить многократные привязки регулярных выражений на текстовое поле в ZKOSS

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

Выходом является первым регулярное выражение работает нормально, но на оскорбляя же " {Illegal Value} ,/[^AaRrUuFf]/ : Reserved Code" отображается как ошибка.

ответ

0

Вы не можете сделать это в zul, но с помощью SimpleConstraint вы можете создать это.

Создайте свой собственный класс и продолжите SimpleConstraint.
Затем удерживайте 2 Matcher vars для каждого ограничения.
Наконец, переопределите метод Validate примерно на следующее:

@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. 
    } 

}