一種可能性是創建一個複合或鏈接驗證器並將所有驗證器放入其中。然後,如果至少有一個validaotr無法驗證,則鏈式驗證器將返回false。
例如:
if (validators != null && validators.length > 0) {
UpdateValueStrategy update = new UpdateValueStrategy();
CompositeValidator validator = new CompositeValidator();
for (IValidator val2Add : validators) {
validator.addValidator(val2Add);
}
update.setAfterConvertValidator(validator);
}
public class CompositeValidator implements IValidator {
private List<IValidator> validators = new ArrayList<IValidator>();
public IStatus validate(Object value) {
for (IValidator validator : validators) {
IStatus status = validator.validate(value);
if (IStatus.ERROR == status.getSeverity()) {
return status;
}
}
}
}
然後結合具有相同複合驗證所有的控制,但添加特定控制驗證器爲好。
您也可以將控件傳遞給驗證器,如果有錯誤,您可能需要顯示該字段的錯誤控制裝飾。