1

我们正在开发一个新的 struts2 自定义验证器。

此验证器检查用户帐号是否具有有效格式。对于此验证器,帐号不能是null整数。

有两种方法:

  1. 我们开发验证器并假设用户使用 @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;
        }
    }
    

    如您所见,我们不处理我们假设通过整数验证或必需验证完成的任何验证。如果出现任何问题,我们将返回并且不添加任何已提交的错误。

  2. 下一个方法是我们开发一个复杂的帐号验证,在开始他自己的验证检查之前调用整数验证和必需的验证。在这里,我们可以通过某种方式将验证链接到彼此。

    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 使用第一种方法)
4

0 回答 0