如何在ZKOSS中的文本框上设置多个正则表达式Costraints

时间:2016-05-21 11:09:51

标签: regex zk

我有一个只接受字符的文本框: - 因为第一个正则表达式已经设置为约束,它不应该接受一些保留的关键字,即A,R,F,U。由于设置了两个不同的约束,我想要用户查看特定消息,首先它应该是非法值,即默认的zkoss错误,当他/她输入保留字符时,它应该显示保留代码已被放置。 但不知何故,下面的代码不起作用:

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

输出是第一个正则表达式工作正常,但在冒犯相同的" {Illegal Value} ,/[^AaRrUuFf]/ : Reserved Code"时显示为错误。

1 个答案:

答案 0 :(得分:0)

你不能在zul中这样做,但是在SimpleConstraint的帮助下你可以创建它。

创建自己的类,并扩展SimpleConstraint 然后为每个约束保留2 Matcher个变量 最后,将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.
    }

}