如何在 ZKOSS 中的文本框上设置多个正则表达式约束
How to Set Multple Regex Costraints on textbox in ZKOSS
我有一个只能接受字符的文本框:-因为第一个正则表达式已设置为约束,它不应该接受一些保留关键字 A、R、F、U。由于设置了两个不同的约束,我希望用户看到具体消息,首先它应该是非法值,即默认 zkoss 错误,当 he/she 输入保留字符时,它应该显示已输入保留代码。
但不知何故,以下代码不起作用:
field_code.setConstraint("/[a-zA-Z]/ : {Illegal Value} ,/[^AaRrUuFf]/ : Reserved Code");
输出是第一个正则表达式工作正常但在违规时 " {Illegal Value} ,/[^AaRrUuFf]/ : Reserved Code"
显示为错误。
您不能在 zul 中执行此操作,但在 SimpleConstraint
的帮助下您可以创建它。
创建您自己的 class,并扩展 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.
}
}
我有一个只能接受字符的文本框:-因为第一个正则表达式已设置为约束,它不应该接受一些保留关键字 A、R、F、U。由于设置了两个不同的约束,我希望用户看到具体消息,首先它应该是非法值,即默认 zkoss 错误,当 he/she 输入保留字符时,它应该显示已输入保留代码。 但不知何故,以下代码不起作用:
field_code.setConstraint("/[a-zA-Z]/ : {Illegal Value} ,/[^AaRrUuFf]/ : Reserved Code");
输出是第一个正则表达式工作正常但在违规时 " {Illegal Value} ,/[^AaRrUuFf]/ : Reserved Code"
显示为错误。
您不能在 zul 中执行此操作,但在 SimpleConstraint
的帮助下您可以创建它。
创建您自己的 class,并扩展 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.
}
}