我有2个TimeItems,我希望能够验证第二个项目的值不大于第一个项目的值.
我知道我必须从CustomValidator继承并将我的验证逻辑放在#condition中,我可以使用#getFormItem检索已验证项的值,但我不知道如何将第一个字段的值传递给验证器
或者为了更好的可读性和代码可维护性,请使用嵌套类:
class YourClass {
private TimeItem timeItem1;
private TimeItem timeItem2;
public YourClass() {
//Instantiate your TimeItem objects.
...
//Set the validator
MyCustomValidator validator = new MyCustomValidator();
timeItem1.setValidators(validator);
/Assuming that both items should check validation.
timeItem2.setValidators(validator);
}
...
class MyCustomValidator extends CustomValidator {
@Override
protected boolean condition(Object value) {
//Validate the value of timeItem1 vs the timeItem2
//Overide equals or transform values to
if (timeItem1.getValueAsString().equals(timeItem2.getValueAsString()) {
//Return true or false.
}
return false;
}
...
}
}
Run Code Online (Sandbox Code Playgroud)
如果您更喜欢为两个TimeItem对象创建getter方法,以避免在嵌套类中使用私有属性.