我们正在开发一个新的 struts2 自定义验证器。
此验证器检查用户帐号是否具有有效格式。对于此验证器,帐号不能是null
整数。
有两种方法:
我们开发验证器并假设用户使用
@IntRangeFieldValidator
和@RequiredFieldValidator
之前使用我们的验证器@IntRangeFieldValidator(type = ValidatorType.FIELD, min = "1", key = "validate.int.min") @RequiredFieldValidator(type = ValidatorType.SIMPLE, key = "validate.required") @CustomValidator(type = "accountNumber", message = "Price must be a number") public void setAccount(Integer accountNumber){}
这样,验证将如下所示
public class AccountNamuberValidator extends FieldValidatorSupport { String fieldName = getFieldName(); String val = (String) getFieldValue(fieldName, object); if (val == null && (value instanceof String ) &&... ) { //we are assumption is not correct we just return return; } }
如您所见,我们不处理我们假设通过整数验证或必需验证完成的任何验证。如果出现任何问题,我们将返回并且不添加任何已提交的错误。
下一个方法是我们开发一个复杂的帐号验证,在开始他自己的验证检查之前调用整数验证和必需的验证。在这里,我们可以通过某种方式将验证链接到彼此。
public class AccountNamuberValidator extends FieldValidatorSupport { String fieldName = getFieldName(); String val = (String) getFieldValue(fieldName, object); //Call struts required validaitor //Call struts integer validaitor //Go on with account number validation }
所以使用这个验证器将是:
@CustomValidator(type = "accountNumber", message = "Price must be a number") public void setAccount(Integer accountNumber){}
现在这里有问题:
- 是否可以做第二个方法(我找不到如何从我的自定义验证器中调用 Struts2 验证器)?
- 哪种方法更好?(我发现 Strut 使用第一种方法)